【发布时间】:2017-02-02 21:26:39
【问题描述】:
我有一个看起来像这样的数据框
Month Fruit Sales
1 Apple 45
1 Bananas 12
3 Apple 6
1 Kiwi 34
12 Melon 12
我正在尝试获取这样的数据框
Fruit Sales (month=1) Sales (month=2)
Apple 55 65
Bananas 12 102
Kiwi 54 78
Melon 132 43
我现在有
df=df.groupby(['Fruit']).agg({'Sales':np.sum}).reset_index()
必须有一些方法可以根据“月份”变量过滤 agg() 中的参数。我只是无法在文档中找到它。有什么帮助吗?
编辑: 感谢您的解决方案。为了使事情复杂化,我还想总结另一列。示例:
Month Fruit Sales Revenue
1 Apple 45 45
1 Bananas 12 12
3 Apple 6 6
1 Kiwi 34 34
12 Melon 12 12
首选输出类似于
Sales Revenue
Fruit 1 3 12 1 3 12
0 Apple 61 6 0 61 6 0
1 Bananas 12 6 0 12 6 0
2 Kiwi 34 0 0 34 0 0
3 Melon 0 0 12 0 0 12
我设法通过df.pivot_table(values=['Sales','Revenue'], index='Fruit', columns=['Month'], aggfunc='np.sum').reset_index() 解决了这个问题。
我对@987654327@ 尝试了同样的操作,但这会引发 TypeError。 groupby也可以进行上述操作吗?
【问题讨论】:
-
这不是 SO 的工作方式,请向我们展示您迄今为止共同完成的 sn-p。