如何根据组求和一个值?

How to sum a value based on group?

我想弄清楚如何为我的数据框中的每个地理位置计算从排名 5 到最低排名(即 5-1,000)的值。

df = df.set_index('geography')

df["Rank"] = df.groupby("geography")["value_to_sum"].rank("dense", ascending=True)

df = df.groupby('geography').iloc('Rank')[5, :]['value_to_sum'].sum(axis=1)

但是,我收到错误消息:'DataFrameGroupBy' 对象没有属性 'iloc'

我是不是用错了iloc?

IIUC,尝试:

>>> df[df.groupby("geography")["value_to_sum"].rank("dense").lt(5)].sum(axis=1)