如何在Pandas Groupby中汇总多个列 [英] How to aggregate multiple columns in pandas groupby

查看:542
本文介绍了如何在Pandas Groupby中汇总多个列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下输入创建了一个熊猫数据框mn:

I have created a pandas dataframe mn using following input:

keyA     state n1    n2     d1  d2
key1     CA   100   1000    1   2
key2     FL   200   2000    2   4
key1     CA   300   3000    3   6
key1     AL   400   4000    4   8
key2     FL   500   5000    5   2
key1     NY   600   6000    6   4
key2     CA   700   7000    7   6

已创建如下求和对象:

s = mn.groupby(['keyA','state'], as_index=False).sum()

如何迭代求和对象s,所以可以获得以下输出:

How do I iterate the sum object s, so I can get following output:

以下结果中的v1列计算为s['n1']/s['d1']

The v1 column in the result below is computed as s['n1']/s['d1']

以下结果中的v2列计算为s['n2']/s['d2']

The v2 column in the result below is computed as s['n2']/s['d2']

keyA state  v1  v2
'key1','AL',100,500
'key1','CA',100,500
'key1','NY',100,1500
'key2','CA',100,1166
'key2','FL',100,1166

推荐答案

几乎像伪代码一样编写它.

Pretty much just write it like your pseudocode.

In [14]: s = mn.groupby(['keyA','state'], as_index=False).sum()

In [15]: s['v1'] = s['n1'] / s['d1']

In [16]: s['v2'] = s['n2'] / s['d2']

In [17]: s[['keyA', 'state', 'v1', 'v2']]
Out[17]: 
   keyA state   v1           v2
0  key1    AL  100   500.000000
1  key1    CA  100   500.000000
2  key1    NY  100  1500.000000
3  key2    CA  100  1166.666667
4  key2    FL  100  1166.666667

[5 rows x 4 columns]

顺便说一句,我认为您的示例数据中有错别字.第二个n1标头应为n2.

I think you have a typo in your example data by the way. The second n1 header should be n2.

这篇关于如何在Pandas Groupby中汇总多个列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆