我正在尝试使用以下代码填充数据框:
df = pd.DataFrame(data=np.random.choice([1, np.nan], size=5))
0 1
1 1
2 NaN
3 1
4 1
然后:
df[df[0].isnull()]
2 NaN
到目前为止,这么好。但是,如果我正在修改1到' 1'事情变得奇怪(imo)。
df = pd.DataFrame(data=np.random.choice(['1', np.nan], size=5))
0 1
1 1
2 1
3 1
4 nan
isnull出现问题
df[df[0].isnull()]
Empty DataFrame
Columns: [0]
Index: []
如何让nan(这是一个字符串)表现得像NaN? 我希望能够快速过滤我的数据帧中的所有null /非null值。
感谢。
答案 0 :(得分:1)
NaN
是一个在处理数字时有意义的概念,而不是字符串。当您使用'1'
创建数据框时,Pandas会推断该列的类型:str
,哪个IMO是正确的。因此,它会将NaN
值转换为字符串表示形式。
请注意,例如,如果您说:
df = pd.DataFrame(data=np.random.choice(['1', 2], size=5))
2
也将转换为字符串。因为,Pandas再次推断整个列的字符串类型。
但是,您仍然可以使用建议的数据框轻松过滤:
df = pd.DataFrame(data=np.random.choice(['1', np.nan], size=5))
df[df[0] == 'nan']