gpt4 book ai didi

python - 如何删除 `row[patient_id]` 重复的行和 `row[Target]==0` ?

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

我想从 .csv 文件中删除所有行,其中:

1) 行[patent_id]重复

2) 行[目标] == 0

列名:患者 ID x y w h 目标

patientId        x      y     w       h      Target
'2341-vcb1' '10' '20' '30' '40' '1'
'2341-vcb1' '70' '20' '70' '40' '1'
'2341-vcb1' '0' <-delete it
'1111-xcsc' '0'
'2341-v233' '34' '43' '10' '29' '1'

image

df2 = df2.drop_duplicates(subset='PatentId' && ??? )

最佳答案

您可以做的一件事是创建一个列,在其中计算目标的累积总和。首先按患者 ID 对 df 进行排序,然后按降序对目标进行排序,然后使用 groupby 和 cumsum 函数将目标相加(称为 target_sum)。获得该列后,您可以删除 target = 0 且 target_sum > 0 的行。

背后的逻辑:

  • 如果 id 在 target == 0 的行上方有其他有效行(因为我们已经对其进行了排序),则 target_sum 应 >0。因此,如果我们看到 target_sum >0,我们就知道该行有重复的 id。
  • 如果 target_sum = 0,则意味着特定 id 没有任何其他具有有效值的行,因此我们要保留它。
<小时/>
df['target_sum'] = df.sort_values(by=['patientID','Target'], ascending=False).Target.groupby('patientID').cumsum()

df = df[~ (df['Target'] == 0) & (df['target_sum' > 0])]

关于python - 如何删除 `row[patient_id]` 重复的行和 `row[Target]==0` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820006/

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