作为数据分析练习的一部分,我正在将excel表读入pandas数据帧。
df = pd.ExcelFile('file.xlsx').parse(0)
nullcounts = df.isnull().sum().to_frame('null_records')
为我的数据帧中的每个系列生成一个带有空计数的漂亮帧。但如果字符串“NA”出现在一行数据中,我不希望isnull
操作返回True
。
有没有一种简单的方法可以在不对特定列/数据帧进行硬编码的情况下执行此操作?
编辑:我的源数据中的NA似乎在被读入pandas时被忽略,因为当我加载数据并进行可视比较时,我看到NaN
excel中有NA
。
答案 0 :(得分:3)
如果可以使用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