我希望panda read_csv能够正确地将下面的示例文本读入DataFrame:"INDEX"|"COLUMN_STRING"|"COLUMN_INTEGER"|"COLUMN_EMPTY"|"COLUMN_EMPTY_STRING" 1|"string"|21||""
我需要解析的文件包含所有应该是用""
封装的字符串的值,应该是NaN
的值没有双引号,如下所示:||
我希望read_csv将所有“带引号”的值保存为字符串,也包括""
,但它强制NaN
作为""
的默认值。
如果我使用keep_default_na=False
,它会将空字符串''
同时设置为||
和|""|
。
此外,使用dtype={"COLUMN_EMPTY_STRING": str}
也没有帮助。
有人知道这个难题的解决方法吗?
另一个可能的解决方案是使用quoting=3
。这将使字符串保持为"string"
,这可以在解析后解决。但我不能使用它,因为我提供了index_col
参数,这会引发错误,因为它无法找到例如INDEX
,因为它从文件中读取"INDEX"
。
2条答案
按热度按时间ozxc1zmp1#
根据文件的大小,一种解决方案是在内存中预处理文件,以便使用python
io.StringIO
将所有出现的||
替换为|NaN|
df
看起来是这样的:验证:
slwdgvem2#
在这个问题中有三个独立的问题:
1.使用管道符号的柱Separation,参数:
pandas.read_csv( sep='|' )
1.使用的Quote character是双引号,参数:
pandas.read_csv( quotechar='"' )
1.列的数据类型需要为字符串或数字,参数:
dtype={"COLUMN_EMPTY_STRING": 'string'}
将强制所有值为基元字符串,包括空值