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

Pandas如何按条件提取DataFrame符合筛选规则的中间行

实现方案

直接通过布尔筛选+位置索引即可完成需求,用统一的索引计算逻辑兼容奇偶行数场景,无需额外写条件分支。

实现代码

import pandas as pd

# 第一步:筛选C列值为1的行,保留原始先后顺序
c1_rows = df[df["C"] == 1]
# 第二步:计算目标行位置,公式兼容奇偶两种场景
target_index = (len(c1_rows) - 1) // 2
# 第三步:按位置提取目标行,保留A/B/C三列,返回DataFrame格式
df_return = c1_rows.iloc[[target_index]][["A", "B", "C"]]

逻辑说明

  • 索引计算公式(行数-1) // 2是整数向下取整运算,完全匹配需求规则:
    • 当筛选出的行数为奇数,比如示例1的3行:(3-1)//2 = 1,对应0起始位置的第2行,就是正中间的e p 1
    • 当筛选出的行数为偶数,比如示例2的6行:(6-1)//2 = 2,对应0起始位置的第3行,就是两个中间行里靠前的t b 1
  • 代码中iloc是按数据的实际位置取数,不受原始DataFrame索引值影响,不会因为原索引不连续出现取数错误
  • iloc传入列表[target_index]是为了保证返回结果是DataFrame结构,如果直接传入整数值会返回Series格式,不符合df_return的格式要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:39:16