gpt4 book ai didi

python - 与 Pandas 中的大型 DataFrame 不同的删除行/获取子集的最快方法

转载 作者:行者123 更新时间:2023-11-28 20:31:56 27 4
gpt4 key购买 nike

问题

我正在寻找从大型 Pandas DataFrame 中删除一组我拥有索引的行或获取这些索引的差异子集(产生相同数据集)的最快方法。

到目前为止,我有两个解决方案,对我来说似乎相对较慢:

  1. df.loc[df.difference(indices)]

    在我的数据集上花费大约 115 秒

  2. df.drop(索引)

    在我的数据集上花费大约 215 秒

有没有更快的方法来做到这一点?最好在 Pandas 中。

建议解决方案的性能

最佳答案

我相信您可以创建 bool 掩码,通过 ~ 反转并通过 boolean indexing 过滤:

df1 = df[~df.index.isin(indices)]

正如 @user3471881 提到的,如果您打算稍后操作过滤后的 df 避免链式索引,则需要添加 copy:

df1 = df[~df.index.isin(indices)].copy()

此过滤取决于匹配索引的数量以及 DataFrame 的长度。

所以另一种可能的解决方案是创建索引的array/list 用于保存,然后不需要反转:

df1 = df[df.index.isin(need_indices)]

关于python - 与 Pandas 中的大型 DataFrame 不同的删除行/获取子集的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53394523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com