gpt4 book ai didi

python - 如何对每组 pandas groupby 应用不同的功能?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:04 26 4
gpt4 key购买 nike

如果我有如下数据框,

import numpy as np
import pandas as pd
df2 = pd.DataFrame({'type':['A', 'A', 'B', 'B', 'C', 'C'], 'value':np.random.randn(6)})
>>> df2
type value
0 A -1.136014
1 A -0.715392
2 B -1.961665
3 B -0.525517
4 C 1.358249
5 C 0.652092

我想按“类型”列对数据框进行分组,并对每个组应用不同的函数,例如,min 用于 A 类型的组,max 用于类型 B 的组,mean 用于类型 C 的组。

编辑 2014-08-05 12:00 GMT+8:

用户提供了一些非常好的答案。但我使用 groupby 的原因是因为我希望结果在同一个数据框中,如下所示:

  type     value
0 A -1.136014
1 B -0.525517
2 C 1.005171

感谢任何帮助~

最佳答案

赞成 abarnert 的回答,因为它很好。

另一方面,为了根据OP的规范回答OP的问题:

for group in df2.groupby('type'):
print group
if group[0] == 'A':
print group[1].min()
if group[0] == 'B':
print group[1].max()
if group[0] == 'C':
print group[1].mean()

另一方面,我建议简单地计算每个组的所有内容,因为这很容易。这就是进行 groupby 操作的意图。

In [5]: summary = pd.DataFrame()

In [6]: summary['mean'] = df2.groupby('type').mean()['value']

In [7]: summary['min'] = df2.groupby('type').min()['value']

In [8]: summary['max'] = df2.groupby('type').max()['value']

summary 将如下所示:

In [9]: summary
Out[9]:
mean min max
type
A 0.440490 0.231633 0.649346
B 0.172303 0.023094 0.321513
C 0.669650 -0.373361 1.712662

关于python - 如何对每组 pandas groupby 应用不同的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25130769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com