使用列表从CSV中提取完整的行,我们不知道行索引



有人能帮我解决以下问题吗

我有一个CSV,它相对较大,有100多万行X4000列。案例ID是csv中的第一列标题之一。现在,我需要提取属于少数事例ID的完整行,这些行在列表中记录为错误ID。

注意:我不知道所需案例ID的索引

示例>CSV为-production_data.CSV,故障Id,faulty_Id=[500572525282998155558]

现在,我们需要提取faulty_Id=[500572525282998155558]的完整行

致以最诚挚的问候

如果您的faculty_id在csv文件中作为标头存在,您可以使用pandas数据帧读取csv,并将索引设置为faculty_id,并根据faculty_id提取行。欲了解更多信息,请附上csv 的样本数据

CSV,它相对较大,有超过100万行X 4000列

由于CSV只是文本文件,可能太大了,无法将其整体加载,我建议使用fileinput内置模块,如果ID是第一列,则创建extractfaults.py,如下所示:

import fileinput
faulty = ["50055", "72525", "82998", "1555558"]
for line in fileinput.input():
if fileinput.lineno() == 0:
print(line, end='')
elif line.split(",", 1)[0] in faulty:
print(line, end='')

并按照的方式使用

python extractfaults.py data.csv > faultdata.csv

说明:保留第一行(标题(或具有所提供ID之一的行(我使用了可选的第二个.split参数将拆分数限制为1(。注意end=''的用法,因为fileinput保留原始换行符。我的解决方案假设ID不被引用,ID是第一列,如果其中任何一个不成立,请根据您的目的随意调整我的代码。

最好的方法是使用Postgres或MySQL这样的数据库。您可以先将数据复制到数据库中,然后轻松地操作行和列。在您的情况下,文件并不是最好的解决方案,因为您需要将文件中的所有数据上传到内存中才能进行处理。此外,打开文件还需要花费大量时间。

相关内容

最新更新