[英]Pandas replace all items in a row with NaN if one value is NaN
[英]Pandas replace all values in a row with NaN if one value is NaN
我有以下数据框
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
我该怎么做呢?
将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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.