我有以下数据:
A, B, c1 , c2, c3
01001,First cat,0,0,0
01001,Second Cat,0,0,0
01002,First cat,183,0,0
01002,Second cat,183,0,6
我想成为:
A, B, col, First cat, Second Cat
01001,c1, 0,0,0
01001,c2, 0,0,0
01001,c3, 0,0,0
01002,c1, 183,183,0
01002,c2, 0,0,0
01002,c3, 0,0,6
因此,我猜它被称为展开文件?我的想法是读取每一行并手动重新解析整个文件。我想知道在熊猫或类似地区是否有一条捷径。
感谢您的帮助
DataFrame.melt
与DataFrame.pivot
和一起使用DataFrame.fillna
:
df = df.melt(['A','B']).pivot(['A','variable'], 'B','value').fillna(0).reset_index()
print (df)
B A variable First cat Second Cat Second cat
0 01001 c1 0 0 0
1 01001 c2 0 0 0
2 01001 c3 0 0 0
3 01002 c1 183 0 183
4 01002 c2 0 0 0
5 01002 c3 0 0 6
或DataFrame.set_index
和DataFrame.stack
和Series.unstack
:
df = df.set_index(['A','B']).stack().unstack(level=1, fill_value=0).reset_index()
print (df)
B A level_1 First cat Second Cat Second cat
0 01001 c1 0 0 0
1 01001 c2 0 0 0
2 01001 c3 0 0 0
3 01002 c1 183 0 183
4 01002 c2 0 0 0
5 01002 c3 0 0 6
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句