Python 3.x 取消数据框列值的分组(以逗号分隔)
您好,我有一个分组的dataframe想要解组dataframe列值以逗号分隔dataframe,如下所示Python 3.x 取消数据框列值的分组(以逗号分隔),python-3.x,pandas,Python 3.x,Pandas,您好,我有一个分组的dataframe想要解组dataframe列值以逗号分隔dataframe,如下所示 col1 col2 name exams 0,0,0 0,0,0, A1 exm1,exm2, exm3 0,1,0,20 0,0,2,20 A2 exm1,exm2, exm4, exm5 0,0,0,30 0,0,20,20 A3 exm1,exm2, exm
col1 col2 name exams
0,0,0 0,0,0, A1 exm1,exm2, exm3
0,1,0,20 0,0,2,20 A2 exm1,exm2, exm4, exm5
0,0,0,30 0,0,20,20 A3 exm1,exm2, exm3, exm5
输出我想要的
col1 col2 name exam
0 0 A1 exm1
0 0 A1 exm2
0 0 A1 exm3
0 0 A2 exm1
1 0 A2 exm2
0 2 A2 exm4
20 20 A2 exm5
..............
30 20 A3 exm5
我尝试过但无法获得正确的方法任何人请给我建议如何获得我的输出尝试使用explode,注意,explode是pandas 0.25.0之后的新功能
df[['col1','col2','exams']]=df[['col1','col2','exams']].apply(lambda x : x.str.split(','))
df = df.join(pd.concat([df.pop(x).explode() for x in ['col1','col2','exams']],axis=1))
Out[62]:
name col1 col2 exams
0 A1 0 0 exm1
0 A1 0 0 exm2
0 A1 0 0 exm3
1 A2 0 0 exm1
1 A2 1 0 exm2
1 A2 0 2 exm4
1 A2 20 20 exm5
2 A3 0 0 exm1
2 A3 0 0 exm2
2 A3 0 20 exm3
2 A3 30 20 exm5
尝试使用explode,注意,explode是pandas 0.25.0之后的新功能
df[['col1','col2','exams']]=df[['col1','col2','exams']].apply(lambda x : x.str.split(','))
df = df.join(pd.concat([df.pop(x).explode() for x in ['col1','col2','exams']],axis=1))
Out[62]:
name col1 col2 exams
0 A1 0 0 exm1
0 A1 0 0 exm2
0 A1 0 0 exm3
1 A2 0 0 exm1
1 A2 1 0 exm2
1 A2 0 2 exm4
1 A2 20 20 exm5
2 A3 0 0 exm1
2 A3 0 0 exm2
2 A3 0 20 exm3
2 A3 30 20 exm5
拆分后多列分解…@BEN_-YO我尝试了显示名称错误:名称“分解”未定义拆分后多列分解…@BEN_-YO我尝试了显示名称错误:名称“分解”未定义