Pandas 加载 CSV 时保留 'null' 和“ ”
Pandas keep 'null' and ' ' when loading CSV
我有一个奇怪的 CSV,它的值是 "null",而且它的值是一个空单元格。
所以我的行看起来像这样:
null,0,0,0,1,,,,0,0,0,null
除了读取和重写文件,我什么也没做:
f = pd.read_csv(input_file,sep=',', quotechar='"', engine='python', converters={i: str for i in range(0, 155)})
f.to_csv(output_file, sep=',', escapechar=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL, index=False)
从技术上讲,上面 "renaming" 是一个文件,但这是为了证明我为整个文件获得了相同的值,稍后我将 trim 某些列(我已经这样做了,但发现数据有误)。
那么,如何在不读取每个 row/column 的情况下同时保留 "null" 和“ ”,并创建一个检查每个单元格的函数?
这可能吗?
我尝试了 na_rep="null",但随后所有的 '' 都被转换为 'null',或者如果我删除它们,那么我的 'null' 值就会丢失。
要完全忽略 NaN
值的处理,您可以将 na_filter=False
参数传递给 read_csv
方法:
f = (pd.read_csv(input_file,sep=',',
quotechar='"',
engine='python',
converters={i: str for i in range(0, 155)},
na_filter=False))
或者,如果您需要更多地控制值的处理方式,您可以排除默认值并传入您自己的 na_values
列表。例如:
f = (pd.read_csv(input_file,sep=',',
quotechar='"',
engine='python',
converters={i: str for i in range(0, 155)},
na_values=['nan', 'NaN'],
keep_default_na=False))
将自动强制转换为 NaN
的默认值是
default_na_values = ['', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan',
'1.#IND', '1.#QNAN', 'N/A', 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null']
我有一个奇怪的 CSV,它的值是 "null",而且它的值是一个空单元格。
所以我的行看起来像这样:
null,0,0,0,1,,,,0,0,0,null
除了读取和重写文件,我什么也没做:
f = pd.read_csv(input_file,sep=',', quotechar='"', engine='python', converters={i: str for i in range(0, 155)})
f.to_csv(output_file, sep=',', escapechar=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL, index=False)
从技术上讲,上面 "renaming" 是一个文件,但这是为了证明我为整个文件获得了相同的值,稍后我将 trim 某些列(我已经这样做了,但发现数据有误)。
那么,如何在不读取每个 row/column 的情况下同时保留 "null" 和“ ”,并创建一个检查每个单元格的函数?
这可能吗?
我尝试了 na_rep="null",但随后所有的 '' 都被转换为 'null',或者如果我删除它们,那么我的 'null' 值就会丢失。
要完全忽略 NaN
值的处理,您可以将 na_filter=False
参数传递给 read_csv
方法:
f = (pd.read_csv(input_file,sep=',',
quotechar='"',
engine='python',
converters={i: str for i in range(0, 155)},
na_filter=False))
或者,如果您需要更多地控制值的处理方式,您可以排除默认值并传入您自己的 na_values
列表。例如:
f = (pd.read_csv(input_file,sep=',',
quotechar='"',
engine='python',
converters={i: str for i in range(0, 155)},
na_values=['nan', 'NaN'],
keep_default_na=False))
将自动强制转换为 NaN
的默认值是
default_na_values = ['', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan',
'1.#IND', '1.#QNAN', 'N/A', 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null']