最快的方式是在熊猫中使用

时间:2014-06-17 17:59:33

标签: python pandas

我有两个带ID列的csv,其中第一个csv中的ID是第二个csv中ID的子集。为了节省空间,在第一个csv中读取之后,我试图只读取出现在第一个csv中的第二个csv中的行,如下所示:

chunker = pd.read_csv(t_path)

df = pd.DataFrame()
for chunk in chunker:
    # keep_ids is a series of ids from previous table
    temp = chunk[chunk['Id'].isin(keep_ids)]
    df = df.append(temp, ignore_index=True)
df.reset_index()

我正在处理的文件大到30演出,所以这可能有点慢。有没有更快的方法来找到正确的id,可能使用索引?

编辑1:设置块的索引是否快于等于id列,然后只保留与keep_ids成功合并的行?

1 个答案:

答案 0 :(得分:1)

也许是这样的:

chunker = pd.read_csv(t_path, iterator=True, chunksize=1000)
df = pd.concat(chunk[chunk['Id'].isin(keep_ids) for chunk in chunker ])