我有一个大数据框(约500万行),其中包含一些错误的数据。 我已经确定了数据错误的行的索引,现在我正试图从数据框中删除“错误的”行。
由于数据帧的大小,我在读取csv时正在使用chunksize
功能。
要跳过“错误”行,我使用的是skiprows
和error_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]
因此,我想仍然会跳过行,但不是正确的行。
有什么想法吗?
答案 0 :(得分:0)
删除不良行的最简单方法是明确执行
df = df.loc[~df.index.isin(list_of_bad_rows]),]