【问题标题】:Applying custom function across multiple columns of a pandas DataFrame在 pandas DataFrame 的多列中应用自定义函数
【发布时间】:2018-12-22 18:18:37
【问题描述】:

我对 pandas 还很陌生,甚至无法说明问题,更不用说解决问题了。如果有这样的熊猫数据框:

m = [[1,2,3], [4,2,4], [3,4,5], [2,3,4], [1,5,3], [4,2,5], [3,4,3], [2,1,4], [1,2,3], [4,3,3], [3,2,5], [2,2,4]]
d = pd.DataFrame(m, columns=['key', 'val1', 'val2'])

我想对每一行应用一个自定义函数(例如,val1 ** val2)。然后我想按键聚合(例如,平均值)。最终结果将如下所示:

   key  result
0    1   47.00
1    2   32.67
2    3  373.33
3    4   19.00

我知道我可以通过使用循环来做到这一点,但我希望以最 Python/pandas 的方式实现这一点:通过按键分组,然后在所有列中应用自定义函数。或者也许最好在所有行中应用自定义函数,然后通过平均聚合按键应用 groupby?

TIA

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    通过自定义函数创建新的Series,并通过Series - d['key'] 与聚合mean 创建groupby

    d = (d['val1'] ** d['val2']).groupby(d['key']).mean().reset_index(name='mean')
    

    或者先新建列再聚合mean

    d['col'] = (d['val1'] ** d['val2'])
    d = d.groupby('key')['col'].mean().reset_index(name='mean')
    
    print (d)
       key        mean
    0    1   47.000000
    1    2   32.666667
    2    3  373.333333
    3    4   25.000000
    

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 2021-11-12
      • 2020-03-06
      • 2018-03-13
      • 2021-06-06
      • 2022-11-29
      相关资源
      最近更新 更多