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

如何按连续浮点型X值区间拆分pandas DataFrame生成对应子表

按X列数值区间拆分DataFrame的实现方法

实现这个需求有两种常用方案,都不需要绘图,纯pandas操作即可:


方案1:少量区间直接用布尔索引

如果你的区间数量不多,可以直接通过条件筛选生成对应子表:

# 先定义你需要的区间边界
bins = [2000, 2300, 2800, 3500]

# 按左闭右开规则筛选,可根据需求调整大于/小于的等于条件
df_1 = df[(df['X'] >= bins[0]) & (df['X'] < bins[1])]
df_2 = df[(df['X'] >= bins[1]) & (df['X'] < bins[2])]
df_3 = df[(df['X'] >= bins[2]) & (df['X'] < bins[3])]

方案2:多区间批量生成(推荐)

如果区间数量多,用pd.cut打标签+分组的方式效率更高,还能避免重复写筛选逻辑:

import pandas as pd

# 1. 配置区间规则
# 自定义区间边界,末尾加float('inf')可自动匹配所有超过3500的数值
bins = [2000, 2300, 2800, 3500, float('inf')]
# 每个区间对应的标签,和你需要的子表命名对应
labels = ['df_1', 'df_2', 'df_3', 'df_over_3500']

# 2. 给每行打区间标签
# right=False代表区间为左闭右开,设置为True则是左开右闭,可按需调整
df['range_tag'] = pd.cut(df['X'], bins=bins, labels=labels, right=False)

# 3. 批量生成所有子表,存入字典,调用时直接取dfs['df_1']即可得到对应子表
dfs = dict(tuple(df.groupby('range_tag')))

# 如果需要单独赋值为变量,加这一步即可
df_1, df_2, df_3, df_over_3500 = dfs.values()

补充说明

  • 如果你不想修改原DataFrame,可直接把pd.cut的结果传给groupby,无需新增标签列:
dfs = dict(tuple(df.groupby(pd.cut(df['X'], bins=bins, labels=labels, right=False))))
  • 如果需要按分位数自动拆分区间,不用手动定义bins,直接用pd.qcut即可:
# 示例:按X列的四分位拆分4个子表
dfs = dict(tuple(df.groupby(pd.qcut(df['X'], q=4, labels=['df_1','df_2','df_3','df_4']))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:30:05