根据ID计算相对于基线的更改

时间:2018-11-26 17:40:57

标签: python python-3.x pandas pandas-groupby

我有一些纵向数据,截至研究日为animal_id,如下所示: enter image description here

我将如何创建一个列,计算每个animal_id与基线相比的变化?在这里,基线将是ord = 0的地方?

2 个答案:

答案 0 :(得分:2)

使用transform first,请注意,假设您的df已排序

df['New']=df['Body_Weight']-df.groupby('Animal_id')['Body_weight'].transform('first')

答案 1 :(得分:0)

要实现此目的,如果您不想对数据进行排序,则可以使用体重值为ord = 0的替代数据帧,然后将其合并到前一个数据帧。

df_ord = df.query("ord==0").rename(columns={'body_weight':'body_weight_base'})
df_ord = df_ord.drop('ord',axis=1)
df = df.merge(df_ord)
df['change'] = df['body_weight'] - df['body_weight_base']