dcast在python中复制

时间:2014-07-30 18:09:15

标签: python pandas

我有一个大熊猫数据框,如下所示:

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中执行此操作?

1 个答案:

答案 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