用熊猫阅读csv时出现“ skiprows”问题

时间:2020-09-24 21:45:09

标签: pandas

我有一个大数据框(约500万行),其中包含一些错误的数据。 我已经确定了数据错误的行的索引,现在我正试图从数据框中删除“错误的”行。

由于数据帧的大小,我在读取csv时正在使用chunksize功能。 要跳过“错误”行,我使用的是skiprowserror_bad_lines features。 我还使用low_memory功能来防止警告(出于示例的目的,我只读取了前20000行)。 然后,将新的数据框保存到新的csv中。

问题在于,仅跳过了前9个“错误的”行,然后仍然读取了“错误的行”(并保存到输出csv中)。

这是我的代码:

for df in pd.read_csv('database.csv', chunksize=1000, nrows=20000,
                       low_memory=False, error_bad_lines=False, skiprows=wrong_id_list):
    df.to_csv('database_fixed.csv', mode='a', header=False, index=False)

其中wrong_id_list是我要删除的行的索引列表:

[2689, 3251, 3254, 3589, 3885, 8301, 10062, 10570, 10883, 13118, 16153, 16237, 17601, 18099, 18676]

在检查database_fixed.csv时,我发现以下行的数据有误:

[13108, 16142, 16225, 17588, 18085, 18661]因此,我想仍然会跳过行,但不是正确的行。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

删除不良行的最简单方法是明确执行

df = df.loc[~df.index.isin(list_of_bad_rows]),]