替换DataFrame中的值

时间:2016-12-12 19:36:32

标签: python pandas

我有一个大型DataFrame对象,其中缺失值预编码为0.001。这些缺失值仅发生在DataFrame的开头。例如:

df = pd.DataFrame({'a':[0.001, 0.001, 0.001, 0.50, 0.10, 0.001, 0.75]})

问题是....有时在DataFrame的开头不存在实际的0.001值,我不想放弃(如上例所示)。

我想要的是:

df = pd.DataFrame({'a' :[NaN, NaN, NaN, 0.50, 0.10, 0.001, 0.75]})

我无法找到一种简单的方法,只能在DataFrame的开头删除0.001值,而忽略稍后发生的其他值。

我正在使用的数据集很大,所以我希望避免循环遍历每个变量和每个索引(这是我目前正在做的但是花费的时间太长了。)

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这是一种方法:

df.mask(df[df!=0.001].ffill().isnull(), np.nan)
Out: 
       a
0    NaN
1    NaN
2    NaN
3  0.500
4  0.100
5  0.001
6  0.750

首先创建一个布尔掩码,其中df不等于0.001。在此选择中,0.001的单元格将为NaN。如果您转发填充此Series / DataFrame,则不会填充第一个元素。然后,您可以将其用作原始DataFrame的掩码。