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

如何高效按百分比获取DataFrame的前x%数据?

最优实现方式:动态适配任意百分比的DataFrame行提取

嘿,这个需求太实用了——不用硬编码行数,改个百分比参数就能适配不同场景对吧?我来分享两种高效的实现方式,都是pandas原生的最优操作:

方案一:用head()+动态计算行数(最直观高效)

这是我平时最常用的方式,因为head()本身就是pandas专门优化过的取前N行方法,性能拉满:

import pandas as pd

# 假设你的DataFrame是df
extract_percent = 5  # 这里随便改20、30、75都ok
target_rows = int(len(df) * (extract_percent / 100))
top_subset = df.head(target_rows)

这里用int()做向下取整,如果你的需求是四舍五入到最近整数,换成round()就行:

target_rows = round(len(df) * (extract_percent / 100))

方案二:iloc切片(更灵活的场景适配)

如果之后你需要扩展需求(比如取中间某段百分比的数据),iloc切片会更灵活,效果和head()几乎一致:

extract_percent = 5
target_rows = int(len(df) * (extract_percent / 100))
top_subset = df.iloc[:target_rows]

额外的边界情况处理小技巧

  • 如果你的DataFrame行数很少(比如只有50行),算出来的target_rows可能是0,这时候可以加个兜底确保至少取1行:
    target_rows = max(1, int(len(df) * (extract_percent / 100)))
    
  • 如果需要向上取整(比如5%的1001行就是50.05,要取51行),可以用math.ceil():
    import math
    target_rows = math.ceil(len(df) * (extract_percent / 100))
    

为啥这是最优方案?

  • 完全动态适配任意百分比,只需要改extract_percent变量,不用动核心逻辑
  • 用的都是pandas原生高效方法,比手动遍历或者其他花里胡哨的方法快得多
  • 代码简洁易懂,后续维护成本极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:45:25