熊猫重新定义 isnull 以忽略“NA”

jos*_*123 2 python pandas

作为数据分析练习的一部分,我正在将 excel 表读取到 Pandas 数据框中。

df = pd.ExcelFile('file.xlsx').parse(0)
nullcounts = df.isnull().sum().to_frame('null_records')
Run Code Online (Sandbox Code Playgroud)

为我的数据帧中的每个系列生成一个带有空计数的漂亮帧。但是如果字符串 'NA' 出现在一行数据中,我不希望isnull操作返回True

有没有一种简单的方法可以在不为特定列/数据帧硬编码规则的情况下做到这一点?

编辑:看来,被读入大熊猫当我的源数据在NAS被忽略,因为当我加载数据,并比较直观地看到我NaN在Excel中,那里有NA

jez*_*ael 5

如果read_excel可以NaN使用参数keep_default_na和定义哪些值转换为na_values

df = pd.read_excel('file.xlsx')
print (df)
     a    b
0  NaN  NaN
1  3.0  6.0

nullcounts = df.isnull().sum().to_frame('null_records')
print (nullcounts)
   null_records
a             1
b             1

df = pd.read_excel('file.xlsx',keep_default_na=False,na_values=['NaN'])
print (df)
    a    b
0  NA  NaN
1   3  6.0

nullcounts = df.isnull().sum().to_frame('null_records')
print (nullcounts)
   null_records
a             0
b             1
Run Code Online (Sandbox Code Playgroud)