【问题标题】:How to aggregate multiple columns in pandas groupby如何在熊猫 groupby 中聚合多个列
【发布时间】:2016-10-28 07:20:57
【问题描述】:

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

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

已经创建了一个 sum 对象如下:

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

我如何迭代 sum 对象s,所以我可以得到以下输出:

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

下面结果中的 v2 列计算为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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    几乎就像你的伪代码一样编写它。

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2023-02-25
      • 2019-08-30
      • 2021-03-21
      • 2019-03-22
      • 1970-01-01
      • 2018-05-15
      相关资源
      最近更新 更多