问:pandas 读取文件时把'NA'字符串读作空值,但是这个并不是真的空值,怎么解决?
答:pandas 读取文本的时候会默认将如下字符串作为空值处理:
‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘<NA>’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’。
这个主要由na_values与keep_default_na这两个个参数控制,详情可参考:https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html?highlight=read_csv
那么如何去使用这些参数呢?
na_values:决定哪些值可以表示为缺失值,默认的缺失值表示方式: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘<NA>’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’。
keep_default_na:决定是否保留na_values默认的缺失值表示方式,
- 当参数为True时pandas会将文件中所有与默认的缺失值表达形式一致的字符串作为空值(nan)处理,这时如果na_values被传入其他参数那这个传入的参数所代表的值也按缺失值处理。
- 当参数取值为False时,pandas会将na_values的默认值关闭,如果na_values没有被赋值,那么源文件中出现什么值,DataFrame中就是什么值。








暂无数据