我的数据框类似于:
accident_type office A office B office C information
1 0 0 0 number
1 0 2 2 fatality
1 0 0 0 frequency
2 0 0 1 number
2 0 0 1 fatality
2 0 0 0 frequency
3 0 0 0 number
3 0 1 1 fatality
3 0 0 0 frequency
我想添加更多列以垂直移动事故信息的值,然后我将放置A,B,C处,并将它们放入另一个新列中,如下所示:
accident_type information office number fatality frequency
1 number office A 0 0 0
1 fatality office B 0 2 0
1 frequency office C 0 2 0
2 number office A 0 0 0
2 fatality office B 0 0 0
2 frequency office C 1 1 0
3 number office A 0 0 0
3 fatality office B 0 1 0
3 frequency office C 0 1 0
我尝试df.melt,但没有得到预期的结果。谁能帮助我如何在python中制作它?
谢谢
我认为您需要DataFrame.melt
使用DataFrame.pivot_table
:
df = (df.melt(['accident_type','information'],
var_name='office')
.pivot_table(index=['accident_type','office'],
columns='information',
values='value',
fill_value=0,
aggfunc='sum')
.reset_index()
.rename_axis(None, axis=1))
print (df)
accident_type office fatality frequency number
0 1 office A 0 0 0
1 1 office B 2 0 0
2 1 office C 2 0 0
3 2 office A 0 0 0
4 2 office B 0 0 0
5 2 office C 1 0 1
6 3 office A 0 0 0
7 3 office B 1 0 0
8 3 office C 1 0 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句