我有一个大熊猫数据框架,如下所示:
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“‘sum”列包含col1的唯一值的col4的所有值的总和。在R中,这可以使用dcast来完成
dcast(dataframe, col1 ~ count, sum, value.var = 'col4')我如何在python中做到这一点?
发布于 2014-07-31 02:23:51
我认为您正在寻找的就是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 pivots等所能做的一切),但这意味着您的想法可能并不总是在两者之间一一对应。
这就是它的实际作用:
>>> # 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 6https://stackoverflow.com/questions/25043927
复制相似问题