加载CSV时,Pandas会保持'null'和''

问题描述 投票:1回答:1

我有一个奇怪的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)

上面是技术上“重命名”一个文件,但这是为了证明我得到了整个文件的相同值,稍后我将修剪某些列(我已经做过,但想出数据是错误的)。

那么,如何在不读取每一行/列的情况下保留“null”和“”,并创建一个检查每个单元格的函数?

这甚至可能吗?

我尝试了na_rep =“null”,但是然后所有''都被转换为'null',或者如果我删除它们,那么我会松开我的'null'值。

python pandas isnull
1个回答
2
投票

要完全忽略对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']
© www.soinside.com 2019 - 2024. All rights reserved.