繁体   English   中英

在pandas DataFrame的多列中应用自定义功能

[英]Applying custom function across multiple columns of a pandas DataFrame

我对熊猫还很陌生,甚至在陈述问题时遇到了麻烦,更不用说解决了。 如果有这样的pandas DataFrame:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM