Я начинаю с одного фрейма данных и хочу разделить его на три фрейма данных в зависимости от условий, установленных для значений ввода. Для df1 я хотел бы иметь только значения Person_X <0,33. Для df2 я бы хотел иметь только 0,34 0,66. Я хотел бы, чтобы NaN заменял целочисленные значения, которые не соответствуют требованиям. </p>
Итак, начиная с df:
In [1]: df=pd.DataFrame({'location':[4991, 8870, 2703, 9674],
...: 'Person_1': ['NaN', 0.2,0.5,0.7],
...: 'Person_2':[0.8, 0.45, 'NaN', 0.1]})
...: df
Out[1]:
location Person_1 Person_2
0 4991 NaN 0.8
1 8870 0.2 0.45
2 2703 0.5 NaN
3 9674 0.7 0.1
, я хотел бы иметь три фрейма данных, которые выглядят так:
df1
location Person_1 Person_2
0 4991 NaN NaN
1 8870 0.2 NaN
2 2703 NaN NaN
3 9674 NaN 0.1
df2
Out[4]:
location Person_1 Person_2
0 4991 NaN NaN
1 8870 NaN 0.45
2 2703 0.5 NaN
3 9674 NaN NaN
df3
Out[4]:
location Person_1 Person_2
0 4991 NaN 0.8
1 8870 NaN NaN
2 2703 NaN NaN
3 9674 0.7 NaN
Я пробовал что-то подобное для каждого из требований, но поскольку df уже содержит NaN, у меня возникают проблемы.
patient_cols=[col for col in df if col.startswith('Person')]
df[patient_cols]=df[patient_cols].applymap(lambda x: np.nan if x>0.33 else x)
df[patient_cols]