You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选pandas数据后,同时获取符合条件行及后续10行数据

实现方案

你可以先定位所有符合筛选条件的行索引,再对每个索引扩展到后续10行的范围,去重后取数即可,代码如下:

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris

# 加载数据集 与你原有逻辑一致
iris = load_iris()
data1 = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                     columns= iris['feature_names'] + ['target'])

# 1. 生成筛选条件掩码,拿到所有匹配行的索引
mask = (data1['sepal length (cm)'] > 4) |  (data1['sepal width (cm)'] > 3)
match_indexes = data1[mask].index
total_rows = len(data1)

# 2. 收集所有需要返回的行索引,自动去重避免重叠范围重复返回
needed_indexes = set()
for idx in match_indexes:
    # 处理边界:如果匹配行在数据集末尾不够10行,直接取到最后一行
    end_idx = min(idx + 10, total_rows - 1)
    needed_indexes.update(range(idx, end_idx + 1))

# 3. 按原数据集顺序排序后取数得到结果
result = data1.iloc[sorted(needed_indexes)]

可选变体

如果你需要保留每个匹配行对应的分组(即每个匹配行+后续10行作为单独的子数据集,允许重叠行重复出现),可以用下面的写法:

result_groups = []
for idx in match_indexes:
    end_idx = min(idx + 10, total_rows - 1)
    # 每个元素为对应匹配行+后续10行的DataFrame
    result_groups.append(data1.loc[idx:end_idx])

内容的提问来源于stack exchange,提问作者user3234242

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:48:03