繁体   English   中英

在熊猫中使用isin的最快方法

[英]Fastest way to use isin in 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成功合并的行,是否很快?

也许是这样的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM