根据 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 = 10
和 Farm ID = 10
的预期输出:0.11
Animal ID = 10
和 Farm 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
我有一个看起来像这样的 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 = 10
和 Farm ID = 10
的预期输出:0.11
Animal ID = 10
和 Farm 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