如何在Pandas Groupby中汇总多个列 [英] How to aggregate multiple columns in pandas groupby
本文介绍了如何在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屋!
查看全文