我试图在DataFrame中找到空值。虽然我回顾了Stackoverflow中的以下帖子,该帖子描述了确定空值的过程,但我很难为我的数据集做同样的事情。
How to count the Nan values in the column in Panda Data frame
工作代码:
import pandas as pd
a = ['america','britain','brazil','','china','jamaica'] #I deliberately introduce a NULL value
a = pd.DataFrame(a)
a.isnull()
#Output:
False
1 False
2 False
3 False
4 False
5 False
a.isnull().sum()
#Output
#0 0
#dtype: int64
我做错了什么?
答案 0 :(得分:1)
列表中的''
不是空值,而是空字符串。要获得null,请改用None
。在pandas.isnull()
documentation中描述了缺失值为“数值数组中的NaN,[或]对象数组中的无/ NaN”。
import pandas as pd
a = ['america','britain','brazil',None,'china','jamaica']
a = pd.DataFrame(a)
a.isnull()
0
0 False
1 False
2 False
3 True
4 False
5 False
您可以通过打印两个数据帧来查看差异。在第一种情况下,数据框看起来像:
pd.DataFrame(['america','britain','brazil',None,'china','jamaica'])
0
0 america
1 britain
2 brazil
3
4 china
5 jamaica
请注意,索引3处的值为空字符串。
在第二种情况下,你得到:
pd.DataFrame(['america','britain','brazil',None,'china','jamaica'])
0
0 america
1 britain
2 brazil
3 None
4 china
5 jamaica
答案 1 :(得分:1)
如果您希望''
,None
和NaN
都计为null
,则可以对数据框中的每个值使用applymap
方法到boolean
,然后再使用.sum
:
import pandas as pd
import numpy as np
a = ['america','britain','brazil',None,'', np.nan, 'china','jamaica'] #I deliberately introduce a NULL value
a = pd.DataFrame(a)
a.applymap(lambda x: not x or pd.isnull(x)).sum()
# 0 3
# dtype: int64
我希望这会有所帮助。