小编Ich*_*xgo的帖子

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

问题

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

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

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

    在我的数据集上大约需要 115 秒

  2. df.drop(indices)

    在我的数据集上大约需要 215 秒

有没有更快的方法来做到这一点?最好是熊猫。

拟议解决方案的性能

  • ~41 秒:df[~df.index.isin(indices)] @jezrael

python dataframe pandas

6
推荐指数
1
解决办法
7724
查看次数

从 Pandas DataFrame 中删除许多索引范围

问题 + MWE

如何使用如下所示的(两级)多索引从 Pandas DataFrame 中删除/删除多个范围的行:

idx1    idx2  |  value(s)   ...
------------------------------------------
4       0     |  1.123456   ...
        1     |  2.234567   ...
        2     |  0.012345   ...
8       0     | -1.123456   ...
        1     | -0.973915   ...
        2     |  1.285553   ...
        3     | -0.194625   ...
        4     | -0.144112   ...
...     ...   | ...         ...
Run Code Online (Sandbox Code Playgroud)

要删除/删除的范围当前位于如下列表中:

ranges = [[(4, 1), (4, 2)],          # range (4,1):(4,2)
          [(8, 0), (8, 3)],          # range (8,0):(8,3)
          [(8, 5), (8, 10)], ...]    # range (8,5):(8,10)
Run Code Online (Sandbox Code Playgroud)

主要问题是,我发现的大多数方法都不支持多索引或切片或多个切片/范围。

最好/最快的方法是什么。

当前丑陋的解决方案 …

python pandas

5
推荐指数
1
解决办法
2125
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1