我从一个数据帧开始,我想根据输入值的条件将它分成三个数据帧。对于 df1,我只想让 Person_X 值 <0.33。对于 df2,我希望只有 0.34<Person_X 值<0.65。对于 df3,我只想让 Person_X 值 >0.66。我希望 NaN 替换不符合要求的整数值。
所以,从 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]
烙印99
相关分类