2024-03-29 09:44:01 发布
网友
我有一个数据框,看起来像:
D Type Value 0 1 A 2 1 1 B 4 2 2 C 1 3 1 A 1
我想按D分组,然后键入值并求和。你知道吗
data=df.groupby(['D','Type']).sum() print(data)
结果是:
D Type Value 1 A 3 B 4 2 C 3
但我想要这种格式:
D A B C 1 3 4 Nan 2 Nan Nan 3
更新:
r = df.pivot_table(index=['D'], columns='Type', aggfunc='sum').reset_index() r.columns = [tup[1] if tup[1] else tup[0] for tup in r.columns] r.to_csv('c:/temp/out.csv', index=False)
结果:
D,A,B,C 1,3.0,4.0, 2,,,1.0
原始答案:
可以使用pivot_table()方法:
In [7]: df.pivot_table(index=['D'], columns='Type', aggfunc='sum', fill_value=0) Out[7]: Value Type A B C D 1 3 4 0 2 0 0 1
或与南的:
In [8]: df.pivot_table(index=['D'], columns='Type', aggfunc='sum') Out[8]: Value Type A B C D 1 3.0 4.0 NaN 2 NaN NaN 1.0
PS我想你的groupby...部分有一个输入错误:
groupby...
In [10]: df.groupby(['D','Type']).sum() Out[10]: Value D Type 1 A 3 B 4 2 C 1
应该有C>;1而不是C>;3
C
1
3
更新:
结果:
原始答案:
可以使用pivot_table()方法:
或与南的:
PS我想你的
groupby...
部分有一个输入错误:应该有
C
>;1
而不是C
>;3
相关问题 更多 >
编程相关推荐