[英]Applying a function to pandas DataFrame across columns to create temporary column for sorting
[英]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.