这是我的数据框:
Tipo Número renal dialisis
CC 260037 NULL NULL
CC 260037 NULL AAB
CC 165182 NULL NULL
CC 165182 NULL CCDE
CC 260039 NULL NULL
CC 49740 XYZ NULL
CC 260041 NULL NULL
CC 259653 NULL NULL
我希望确定DataFrame中每一行的renal
和dialisis
值是否为NULL
。那些不是NULL
的行将在survived
列表中赋值为1
;而如果它们都是NULL
,则会赋值为0
。
我的代码如下:
survival = pd.read_table('Sophia_Personalizado bien.txt',encoding='utf-16')
survived = []
numero_paciente = []
lista_pacienytes= survival['Número'].values.tolist()
lista_pacienytes= sorted(set(lista_pacienytes))
for e in lista_pacienytes:
survival_i = survival.loc[survival['Número']==e]
renal = set(survival_i['renal'].values.tolist())
dialisis = set(survival_i["dialisis"].values.tolist())
print('dialisis',dialisis)
print('renal',renal)
if renal == 'nan' or dialisis == 'nan':
survived.append(0)
numero_paciente.append(e)
else:
survived.append(1)
numero_paciente.append(e)
e = pd.DataFrame({'numero': numero_paciente,
'survival': survived})
令人惊讶的是,所有等于1
的行,但如我们在DataFrame中所看到的,这并不是真实的。此外,结果为
print('dialisis',dialisis)
print('renal',renal)
这是:
dialisis {nan, nan}
renal {nan}
我使用了
set()
,应该返回NAN
,但是没有。我错过了什么吗?谢谢。
set
的重复调用意味着应该删除重复项。结合这个答案和一个简单的df.groupby("Numero").survived.max()
就可以实现这一点。 - coffeinjunkyset(set(np.array([np.nan, np.nan])))
有两个元素。 - fuglede