将数据框中具有多个值的单元格转换为多行
问题内容:
我的数据是这样的:
Name test1 test2 Count
Emp1 X,Y A 1
Emp2 X A,B,C 2
Emp3 Z C 3
我正在使用下面的代码将具有多个值的 test1 单元格拆分为单独的行。但是,我不确定如何拆分 Test2 列。
df2 = df.test1.str.split(',').apply(pd.Series)
df2.index = df.set_index(['Name', 'count']).index
df2.stack().reset_index(['Name', 'count'])
df2
输出为:
Name test1 Count
Emp1 X 1
Emp1 Y 1
Emp2 X 2
Emp2 X 2
Emp2 X 2
Emp2 Z 3
我正在尝试将 test1 和 test2 分开,以实现以下输出:
Name test1 test2 Count
Emp1 X A 1
Emp1 Y A 1
Emp2 X A 2
Emp2 X B 2
Emp2 X C 2
Emp2 Z C 3
有人可以帮忙吗?
问题答案:
我只是修复您的代码,因为我不建议您取消嵌套数据框的方法,因此您可以在此处检查答案,有多种不错的方法。
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'])
就在merge
这里
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