如何从 pandas 数据框中删除多组行

how to drop multiple sets of rows from a pandas dataframe

我正在尝试删除我已确定为错误的数据帧(马刺)行。

我看到了奇怪的行为。

spurs = [(16, 62), (72, 83)]

for spur in spurs:
    full_path.drop(full_path.index[spur[0]: spur[1]], inplace=True)

它只会在循环中丢弃数据帧中的第一个支线。如果我这样做:

full_path.drop(full_path.index[spurs[0][0]: spurs[0][1]], inplace=True)
full_path.drop(full_path.index[spurs[1][0]: spurs[1][1]], inplace=True)

我也有同样的行为。但如果我单独放下它们,它就会起作用。

如有任何帮助,我们将不胜感激。

您应该避免循环中的 reshaping/dropping 行。相反,收集所有要放入 list 中的索引,然后立即 drop 它们:

drop_indices = list()
for spur in spurs:
    drop_indices += list(full_path.index[spur[0]: spur[1]])

full_path = full_path.drop(drop_indices)