我的数据是这样的:
Name test1 test2 test3 Count
Emp1 X,Y A a1,a2 1
Emp2 X A,B,C a3 2
Emp3 Z C a4,a5,a6 3
将具有多个值的 test1 和 test2 单元格拆分为单独的行并将它们合并在一起。
df2 = df.test1.str.split(',').apply(pd.Series)
df2.index = df.set_index(['Name', 'Count']).index
df2=df2.stack().reset_index(['Name', 'Count'])
df3 = df.test2.str.split(',').apply(pd.Series)
df3.index = df.set_index(['Name', 'Count']).index
df3=df3.stack().reset_index(['Name', 'Count'])
df2.merge(df3,on=['Name', 'Count'],how='outer')
代码外是:
Out[132]:
Name Count 0_x 0_y
0 Emp1 1 X A
1 Emp1 1 Y A
2 Emp2 2 X A
3 Emp2 2 X B
4 Emp2 2 X C
5 Emp3 3 Z C
将具有多个值的 Test3 拆分为单独行的代码
df4.index = df.set_index(['Name', 'Count']).index
df4=df4.stack().reset_index(['Name', 'Count'])
任何人都可以帮助我,如何将 Test3 与 test2 和 test1 进行多重连接 就像我在上面的代码中合并 Test1 和 Test 一样?
请您参考如下方法:
更像
df1=df.stack().str.split(',').apply(pd.Series)
df1.stack().unstack(level=2).groupby(level=[0,1]).ffill().reset_index(level=[0,1])
Out[124]:
Name Count test1 test2 test3
0 Emp1 1 X A a1
1 Emp1 1 Y A a2
0 Emp2 2 X A a3
1 Emp2 2 X B a3
2 Emp2 2 X C a3
0 Emp3 3 Z C a4
1 Emp3 3 Z C a5
2 Emp3 3 Z C a6
