我有一个大的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]})
我无法找出一种简单的方法来仅将0.001值放在DataFrame的开头,而忽略以后出现的其他值。
我正在使用的数据集非常庞大,因此我希望避免循环遍历每个变量和每个索引(这是我目前正在做的事情,但是花费的时间太长了)。
有任何想法吗?
最佳答案
这是一种方法:
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的掩码。关于python - 替换DataFrame中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41108248/