首页 > 解决方案 > 从大型 CSV 文件中删除最后一列

问题描述

我有一个大的 CSV 文件,我想使用 datagrip 上传到 postgres。当我上传它时,我收到一些记录的以下错误:

11807:98: actual: value separator (,), expected: record separator (\n) 

问题是只识别了 19 列,并且在极少数记录中有 20 个值。对于那些记录,它根本不导入记录。我确实想在我的数据库中有所有行。

我认为这在 python 中会很轻松。所以我开始使用 pandas 并使用以下行加载数据:

 df = pd.read_csv('filename.csv', sep='delimiter', header=None)

那确实包含文件。然而,要删除 19 逗号后面的所有值,或者只添加完整的第 20 列,我以后可以删除它,这比我预期的要困难得多。感觉这是一个微不足道的问题,我需要朝着正确的方向努力。

标签: pythonpandaspostgresqlcsv

解决方案


以这种方式将其读入数据框不会给您带来任何好处,因为每个单元格都将包含一行文件。

请改用该csv模块,因为它不会尝试将文件作为固定宽度的表格读取。

import csv

with open('filename.csv', 'r') as i, open('fixed.csv', 'w') as o:
    cr = csv.reader(i)
    cw = csv.writer(o)
    for row in cr:
        cw.writerow(row[0:19])



推荐阅读