我有一个包含公司和人员名称的数据框。例如,在同一行中,第一列中的公司名称,第二列中的人名称是公司的一部分(每行一个名称)。每个公司的人数各不相同,我有100多家公司。
这是数据集的示例:
Company name DM Full name
LA CAMPAGNOLA SA Mr Victor Daniel Martin
Mr Fernando Luis Falco
Mr Gustavo Pablo Macchi
Mr Marcelo Dario Siano
INVERSORA ELECTRICA S.A. Mr Luis Pablo Rogelio Pagano
Mr Damian Eduardo Sanfilippo
Mr Sebastian Cordova Moyano
Ms Sylvina Gabriela Sanchez
Mr Luis Rodolfo Secco
Mr Jaime Javier Barba
我需要创建一个新的数据框,其中每一行都是一个独立的项目,其中包括公司名称和员工姓名,如下所示:
Company name DM Full name
LA CAMPAGNOLA SA Victor Daniel Martin
LA CAMPAGNOLA SA Fernando Luis Falco
LA CAMPAGNOLA SA Gustavo Pablo Macchi
LA CAMPAGNOLA SA Marcelo Dario Siano
INVERSORA ELECTRICA S.A. Luis Pablo Rogelio Pagano
INVERSORA ELECTRICA S.A. Damian Eduardo Sanfilippo
INVERSORA ELECTRICA S.A. Sebastian Cordova Moyano
INVERSORA ELECTRICA S.A. Sylvina Gabriela Sanchez
INVERSORA ELECTRICA S.A. Luis Rodolfo Secco
INVERSORA ELECTRICA S.A. Jaime Javier Barba
我找到了不同的示例作为实现方法,但是没有一个起作用。例如:Split cell into multiple rows in pandas dataframe
有人可以帮我怎么做吗?
答案 0 :(得分:0)
看起来公司名称在您的索引中,要将此列显示为列,您可以尝试运行:
df = df.reset_index()
如果不是这种情况,请尝试创建一个可重现的小示例
编辑:从您的评论来看,我不是100%清楚,但我认为您的公司名称列中每个人的行中都有空白字符串?
在这种情况下,首先将空白字符串替换为缺失的字符串,然后向前填充。
df = df.replace(r'^\s+$', np.nan, regex=True)
df["Company name"] = df["Company name"].fillna(method="ffill")
答案 1 :(得分:0)
我设法解决了这个问题:
colNames = ('Company name','DM Full name')
# Define a dataframe with the required column names
masterDF = pd.DataFrame(columns = colNames)
for i in range (0, len(df)):
names=df[df.columns[1]][i]
names=names.splitlines()
for name in names:
count+=1
if name.replace(' ','').isalpha():
name=name.replace('Mr ','').replace('Ms ','')
company=df[df.columns[0]][i]
company=company.replace('\n',' ')
else:
pass
a = str(company)
b = str(name)
masterDF = masterDF.append({'Company name': a, 'DM Full name': b}, ignore_index=True)
print masterDF