如果一个值是NaN,则熊猫用NaN替换一行中的所有值

时间:2019-08-12 07:29:55

标签: python pandas

我有以下数据框

                             X                Y
   DateTime                
2019-07-22 00:00:00         0.5               0.6
2019-07-22 00:01:00         NaN               0.8
2019-07-22 00:02:00         0.7               NaN
2019-07-22 00:03:00         0.4               0.3

如果行中的一个值为NaN,我想用NaN替换行中的所有项目,并保持索引为:

                             X                Y
   DateTime                
2019-07-22 00:00:00         0.5               0.6
2019-07-22 00:01:00         NaN               NaN
2019-07-22 00:02:00         NaN               NaN
2019-07-22 00:03:00         0.4               0.3

我该怎么做?

1 个答案:

答案 0 :(得分:2)

DataFrame.mask与布尔掩码一起使用:

df1 = df.mask(df.isna().any(axis=1))
print (df1)
                       X    Y
DateTime                     
2019-07-22 00:00:00  0.5  0.6
2019-07-22 00:01:00  NaN  NaN
2019-07-22 00:02:00  NaN  NaN
2019-07-22 00:03:00  0.4  0.3

详细信息

通过DataFrame.isna测试缺失值:

print (df.isna())
                         X      Y
DateTime                         
2019-07-22 00:00:00  False  False
2019-07-22 00:01:00   True  False
2019-07-22 00:02:00  False   True
2019-07-22 00:03:00  False  False

然后通过DataFrame.any测试每行是否至少有True

print (df.isna().any(axis=1))
DateTime
2019-07-22 00:00:00    False
2019-07-22 00:01:00     True
2019-07-22 00:02:00     True
2019-07-22 00:03:00    False
dtype: bool