在保持数据帧不变的同时在一列中进行更改

时间:2018-02-01 21:04:28

标签: python pandas

我想在数据帧(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)]

1 个答案:

答案 0 :(得分:1)

这应该有效。通常,仅使用pd.Series.apply无法进行计算的计算。此外,您需要or(|)语句,而不是and,因为没有值可以同时低于5且高于15。

df.loc[(df.C < 5) | (df.C > 15), 'C'] = np.nan