我正在寻找最快的方法来删除一组已获得索引的行,或者从大型 Pandas DataFrame 中获取这些索引差异的子集(这会产生相同的数据集)。
到目前为止,我有两种解决方案,对我来说似乎相对较慢:
df.loc[df.difference(indices)]
在我的数据集上大约需要 115 秒
df.drop(indices)
在我的数据集上大约需要 215 秒
有没有更快的方法来做到这一点?最好是熊猫。
df[~df.index.isin(indices)] @jezrael如何使用如下所示的(两级)多索引从 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)
主要问题是,我发现的大多数方法都不支持多索引或切片或多个切片/范围。
最好/最快的方法是什么。