Skip to main content
 首页 » 编程设计

python之使用 groupby 后如何获取行子集的平均值

2025年05月04日14myhome

我想获取数据框中特定列中特定行子集的平均值。

我可以用

df['C'].iloc[2:9].mean() 

从我的原始 Dataframe 中获取我想要的特定行的平均值,但我的问题是我想在使用 groupby 操作后执行此操作。

我正在 build

df.groupby(["A", "B"])['C'].mean() 

一旦我按 A 列和 B 列分组并得到这 11 个值的平均值,“C”中就会返回 11 个值。我实际上只想获得第 3 到第 9 个值的平均值,但理想情况下我想要做的是

df.groupby(["A", "B"])['C'].iloc[2:9].mean() 

这将为每组 A、B 返回 C 列中的那 11 个值,然后找到第 3 到第 9 个值的平均值,但我知道我不能这样做。该错误建议使用 apply 方法,但我似乎无法弄清楚。

如有任何帮助,我们将不胜感激。

请您参考如下方法:

您可以在 groupby 之后使用 agg 函数,然后在每个组内进行子集并取 mean:

df = pd.DataFrame({'A': ['a']*22, 'B': ['b1']*11 + ['b2']*11, 'C': list(range(11))*2}) 
# A dummy data frame to demonstrate 
 
df.groupby(['A', 'B'])['C'].agg(lambda g: g.iloc[2:9].mean()) 
 
# A   B  
# a  b1    5 
#    b2    5 
# Name: C, dtype: int64