根据 csv 中其他两列的组合值提取一列中条目的最大值和最小值

Extract max and min values of entries in one column based on the combined values of two other columns in csv

我有一个看起来像这样的 csv 文件:

我正在尝试根据“动物 ID”和“农场 ID”列的组合值从“分配”列中提取最大值和最小值。

例如。如果“动物 ID”= 10 和“农场 ID”= 10,我需要找到它的最大值(在本例中为 0.23)和最小值(在本例中为 0.12)并将两者相减。然后,当“动物 ID”= 10 和“农场 ID”= 20 时,我想做同样的事情,依此类推。我尝试了以下操作,但是,出现以下错误:KeyError: 'Assigned'。我不确定我哪里出错了。此外,如果有比我使用的方法更好的方法来实现此目的,我将非常感谢了解这一点。

这是我到目前为止所做的:

if df['AnimalID'].all() ==0 and df['Farm ID'].all() ==0:
    print(df.loc['Assigned'].max() - df.loc['Assigned'].min())

Animal ID = 10Farm ID = 10 的预期输出:0.11 Animal ID = 10Farm ID = 20 的预期输出:0.06

使用groupy_apply:

out = df.groupby(['Animal ID', 'Farm ID'], as_index=False)['Assigned'] \
        .apply(lambda x: x.max() - x.min())
print(out)

# Output
   Animal ID  Farm ID  Assigned
0         10       10      0.11
1         10       20      0.06
2         10       30      0.00