【发布时间】:2021-12-07 08:05:53
【问题描述】:
我有一个很大的数据框,我从中确定了要删除的索引范围。
为了识别正确的行,我有一个看起来有点像这样的数组:
drop_pairs = [
["2020-01-01 10:00:00","2020-01-03 13:00:00"],
["2020-01-13 11:00:00","2020-01-13 13:33:00"],
["2020-01-22 00:07:00","2020-01-22 22:22:00"],
...]
我正在尝试基于此数组在我的数据框中删除行:
for timerange in drop_pairs:
df = df.drop(df.loc[f"{timerange[0]}":f"{timerange[1]}"].index)
但是对于大型数据框,这种方法确实非常慢。 我怎样才能提高效率?
【问题讨论】:
-
只是一个想法,我没有用大 df 尝试过,可能先在索引上执行此操作,然后使用
loc获取您想要的df,而不是在大数据框上操作? -
部分问题是您没有数组。如果你这样做了,你可以非常简单地将整个数组转换成一个布尔掩码,并且只是这样子集。
-
您好,欢迎您。如果您可以查看How to Ask,然后尝试生成minimal reproducible example,那就太好了。
标签: python pandas dataframe indexing drop