采用这样的布尔过滤器操作,它返回结果数据集的副本:
df[(df.age > 20) & (df.age < 30)].
现在从结果集中我想根据索引选择一个随机切片。所以例如。我可能想要第 10 行、第 14 行和第 17 行。
但我不能说
df[(df.age > 20) & (df.age < 30) & df.index.isin([10, 14, 17])]
因为过滤后的索引会不同。我们可以像这样在 3 个语句中轻松做到这一点:
a = df[(df.age > 20) & (df.age < 30)].
a = a.reset_index()
result = a.index.isin([10, 14, 17])
这可能是对整个数据集(百万行)的巨大复制操作,然后是重置操作。
我想在没有复制操作的情况下一步完成。任何意见/见解表示赞赏。