我有一个大熊猫数据框,如下所示:
col1 col2 col3 col4
a d sd 2
b sd sd 2
a ds hg 3
a ew rt 3
b ss qq 4
我希望输出类似于以下内容:
col1 sum
a 8
b 6
'和' column具有col1的唯一值的col4的所有值的总和。
在R中,可以使用dcast
dcast(dataframe, col1 ~ count, sum, value.var = 'col4')
我如何在python中执行此操作?
答案 0 :(得分:2)
我认为你所寻找的是Group By: split-apply-combine中描述的内容:
groups = df.groupby('col1')
splitgroups = groups['col4']
sums = splitgroups.aggregate(np.sum)
或者,更直接地说:
sums = df.groupby('col1').aggregate({'col4': np.sum})
但是请阅读整页; Pandas groupby
功能比R dcast
更灵活(它的设计也可以完成SQL聚合,Excel枢轴等所有功能),但这意味着您的想法可能并不总是一对一地映射两者之间的一个。
这是在行动:
>>> # your DataFrame, with a default index
>>> df = pd.DataFrame({'col1': 'a b a a b'.split(), 'col2': 'd sd ds ew ss'.split(), 'col3': 'sd sd hg rt qq'.split(), 'col4': (2, 2, 3, 3, 4)})
>>> sums = df.groupby('col1').aggregate({'col4': np.sum})
>>> sums
col4
col1
a 8
b 6