我想在数据帧(df)的'C列'中进行更改,同时使用python在数据帧中保持其他值不变。
条件:如果'C列'中的任何值< 5&amp; 'C列'&gt; 15,将其改为'NaN'
当前数据帧:
Index Column A Column B Column C
0 6 12 15
1 8 8 2
2 10 14 6
3 9 16 3
4 4 3 7
5 2 18 7
预期的数据帧输出:
Index Column A Column B Column C
0 6 12 NaN
1 8 8 NaN
2 10 14 6
3 9 16 NaN
4 4 3 7
5 2 18 7
我尝试使用df.apply()
方法,如下所示,但它搞砸了我的索引。你能帮忙吗?
df.loc[df['Column C'].apply(lambda x:np.nan if x <5 and x>15 else x)]
答案 0 :(得分:1)
这应该有效。通常,仅使用pd.Series.apply
无法进行计算的计算。此外,您需要or
(|)语句,而不是and
,因为没有值可以同时低于5且高于15。
df.loc[(df.C < 5) | (df.C > 15), 'C'] = np.nan