gpt4 book ai didi

python - 如何使用 groupby 减去列中的值

转载 作者:行者123 更新时间:2023-12-01 11:10:58 24 4
gpt4 key购买 nike

我有以下数据框:

ID  Days TreatmentGiven TreatmentNumber
--- ---- -------------- ---------------
1 0 False NaN
1 30 False NaN
1 40 True 1
1 56 False NaN
2 0 False NaN
2 14 True 1
2 28 True 2

我想根据第一次治疗的时间 (TreatmentNumber==1) 创建一个新列,其中包含天数的新基线,并按 ID 分组,以便结果如下:

ID  Days TreatmentGiven TreatmentNumber New_Baseline
--- ---- -------------- --------------- ------------
1 0 False NaN -40
1 30 False NaN -10
1 40 True 1 0
1 56 False NaN 16
2 0 False NaN -14
2 14 True 1 0
2 28 True 2 14

执行此操作的最佳方法是什么?

谢谢。

最佳答案

这是一种使用 series.where + groupby+transform 的方法:

s = df['Days'].where(df['TreatmentGiven']).groupby(df['ID']).transform('first')
df['New_Baseline'] = df['Days'].sub(s)

输出

   ID  Days  TreatmentGiven  TreatmentNumber  New_Baseline
0 1 0 False NaN -40.0
1 1 30 False NaN -10.0
2 1 40 True 1.0 0.0
3 1 56 False NaN 16.0
4 2 0 False NaN -14.0
5 2 14 True 1.0 0.0
6 2 28 True 2.0 14.0

关于python - 如何使用 groupby 减去列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60618799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com