【发布时间】:2021-10-03 15:30:13
【问题描述】:
我会定期收到一个包含 100 多列和数百万行的 csv。这些 csv 文件总是包含一组特定的列,Core_cols = [col_1, col_2, col_3],以及可变数量的其他列,Var_col = [a, b, c, d, e]。核心列始终存在,并且可能有 0-200 个可变列。有时,变量列中的一列将包含回车。我知道这可能发生在哪些列中,bad_cols = [a, b, c]。
当使用 pd.read_csv 导入 csv 时,这些回车会使结果数据框中的行损坏。没有这些列,我无法重新制作 csv。
我该怎么做:
- 忽略这些列和其中包含的回车?或
- 用 csv 中的空格替换回车符?
我当前的代码如下所示:
df = pd.read_csv(data.csv, dtype=str)
我已经尝试过诸如在导入后删除列之类的操作,但此时损坏似乎已经造成。我现在找不到代码,但是在测试一个修复程序时,错误提示类似于“数据中的无效字符u000D”。我不控制数据的来源,因此无法对其进行编辑。
【问题讨论】:
-
pandas 可以正常读取默认正确引用 (") 的多行 CSV 文件;例如
df = pd.read_csv('test.csv')。CSV 文件是否在 Excel 中正确打开? -
这些行无法在 excel 中正确打开
-
这是格式正确的多行 CSV:
play,text\n Hamlet,"There are more things in Heaven and Earth, Horatio,\n than are dreamt of in your philosophy." -
尝试分块读取文件?
pd.read_csv(filename, chunksize=chunksize) -
看起来您需要先对数据进行一些数据清理,然后才能将其作为 CSV 数据进行操作。尝试在 test.csv 文件中捕获 4 行 CSV 数据并尝试在 Excel 中打开它。反复试验 - 进行更改,直到它在 Excel 中正确加载,然后看到它在 Pandas 中打开相同的文件。接下来,以编程方式对原始未更改数据的文本行进行这些更改,并尝试在 Pandas 中打开。
标签: python pandas csv python-unicode