我想获取数据框中特定列中特定行子集的平均值。
我可以用
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
