我有两个带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成功合并的行?
答案 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 ])