从第 1 列搜索公共值(患者 ID),如果其他列(病理学)中的所有值都为空,则删除这些公共 ID 的行
search for common value(patient ID) from column 1 and if all there values in other column (pathologies) is null delete the rows of these common ID's
PATIENT_ID
PATHOLOGIES
12
null
12
null
3
patho1
3
null
5
patho2
2
patho1
12
null
如果你能看到,患者 ID 12 始终为空
但其他人可以为空或有病态
如果相同的 ID 始终为 null,我想将其与所有列中的相关行一起删除
注意:我有200万个ID,所以我想要一个代码来搜索ID的(Python,CSV)
要删除只有 "null"
个变量的所有患者,您可以使用此示例:
import csv
from itertools import groupby
with open("input.csv", "r") as f_in:
reader = csv.reader(f_in)
next(reader) # skip header
out = []
for id_, g in groupby(sorted(reader), lambda k: k[0]):
g = list(g)
if all(pathology == "null" for _, pathology in g):
continue
out.extend(g)
with open("output.csv", "w") as f_out:
writer = csv.writer(f_out)
writer.writerow(["PATIENT_ID", "PATHOLOGIES"])
writer.writerows(out)
这将创建 output.csv
:
PATIENT_ID
PATHOLOGIES
2
patho1
3
null
3
patho1
5
patho2
PATIENT_ID | PATHOLOGIES |
---|---|
12 | null |
12 | null |
3 | patho1 |
3 | null |
5 | patho2 |
2 | patho1 |
12 | null |
如果你能看到,患者 ID 12 始终为空 但其他人可以为空或有病态 如果相同的 ID 始终为 null,我想将其与所有列中的相关行一起删除 注意:我有200万个ID,所以我想要一个代码来搜索ID的(Python,CSV)
要删除只有 "null"
个变量的所有患者,您可以使用此示例:
import csv
from itertools import groupby
with open("input.csv", "r") as f_in:
reader = csv.reader(f_in)
next(reader) # skip header
out = []
for id_, g in groupby(sorted(reader), lambda k: k[0]):
g = list(g)
if all(pathology == "null" for _, pathology in g):
continue
out.extend(g)
with open("output.csv", "w") as f_out:
writer = csv.writer(f_out)
writer.writerow(["PATIENT_ID", "PATHOLOGIES"])
writer.writerows(out)
这将创建 output.csv
:
PATIENT_ID | PATHOLOGIES |
---|---|
2 | patho1 |
3 | null |
3 | patho1 |
5 | patho2 |