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

如何从pandas DataFrame子集采样及指定行范围随机选行?

Pandas DataFrame 采样问题解决方案

嘿,针对你提出的两个pandas采样问题,我整理了实用的解决方法,直接上手就能用:

1. 如何从pandas DataFrame的一个子集中进行采样?

要从DataFrame的子集中采样,核心思路是先筛选出目标子集,再对这个子集调用sample()方法。

举个具体的例子:假设你有一个包含销售数据的DataFrame sales_df,想从"销售额大于1000"的子集中随机选5条数据,代码可以这么写:

# 第一步:筛选出目标子集
high_sales_subset = sales_df[sales_df['sales_amount'] > 1000]

# 第二步:对子集进行随机采样(选5条)
sampled_data = high_sales_subset.sample(n=5)

如果想按比例采样(比如取子集的10%),可以用frac参数:

sampled_data = high_sales_subset.sample(frac=0.1)

另外,如果需要保证每次采样结果一致(方便调试),可以设置random_state参数:

sampled_data = high_sales_subset.sample(n=5, random_state=42)

2. 如何从pandas DataFrame的第0行到(总行数-100)行之间随机选取一行?

你提到的sample(1)会选取任意行,要限定范围的话,我们可以先用iloc截取前总行数-100行,再对这个截取后的结果采样。

直接看代码示例:

# 获取DataFrame的总行数
total_rows = len(your_df)

# 截取第0行到(总行数-100)行的范围
target_range = your_df.iloc[:total_rows - 100]

# 从这个范围里随机选一行
start_state = target_range.sample(1)

也可以把它简化成一行代码:

start_state = your_df.iloc[:len(your_df)-100].sample(1)

这里解释一下:iloc[:n]会选取DataFrame中索引从0到n-1的行,所以total_rows - 100作为截止位置,刚好排除了最后100行,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:35:04