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

如何在Pandas DataFrame中按索引选取中间33%的行?

按索引选取DataFrame中间33%行的简洁方法

嘿,这个需求我之前也碰到过!你原来的思路是对的,但确实可以通过一些小技巧让代码更简洁易读,而且不用每次都重复写那些整数转换的逻辑。

首先明确:因为我们是按**行的位置(索引顺序)**选取,而非列的值,核心还是要用iloc来定位,但可以优化计算方式:

方法1:拆分变量提升可读性

把起始和结束索引的计算拆成单独变量,代码一下子就清爽了:

total_rows = len(df)
start_idx = int(total_rows * 0.33)
end_idx = int(total_rows * 0.66)
middle_df = df.iloc[start_idx:end_idx]

这样不仅看起来更清晰,后续要调整百分比(比如改成中间40%)也更容易修改。

方法2:用round()优化索引计算

如果希望索引的取值更贴合“中间33%”的直观预期(比如四舍五入而非直接截断),可以用round()代替int(),写法也更简洁:

middle_df = df.iloc[round(len(df)*0.33):round(len(df)*0.66)]

方法3:封装成可复用函数

如果经常需要选取不同范围的百分比行,直接封装成函数是最方便的:

def get_middle_slice(df, lower_pct=0.33, upper_pct=0.66):
    total = len(df)
    return df.iloc[round(total*lower_pct):round(total*upper_pct)]

# 调用示例:选中间33%
middle_33 = get_middle_slice(df)
# 选中间50%(从25%到75%)
middle_50 = get_middle_slice(df, 0.25, 0.75)

这样以后不管要选什么范围,一行调用就搞定了。

至于你提到的“有没有专门的Pandas命令”——其实这种按行位置取固定百分比的需求相对特定,Pandas没有专门的API,但通过上面这些方式,用iloc配合简单计算就能很好解决,而且灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:33