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

如何用pandas.cut处理多列并生成含原值与分箱值的DataFrame?

解决多列/多DataFrame分箱并生成含原值的DataFrame问题

我来帮你搞定这个需求!你想要的是对每一列数据做分箱后,保留原始值并和分箱结果放在同一个DataFrame里,对吧?下面分示例场景和实际批量场景给你演示代码:

示例场景:处理单个列(a、b)

首先导入pandas库,然后对每个列表单独处理,生成带原值和分箱值的DataFrame:

import pandas as pd

# 处理a列
a = [1, 2, 9, 1, 5, 3]
df_a = pd.DataFrame({'Values': a})
# 给Values列做3箱分箱,结果存到bin列
df_a['bin'] = pd.cut(df_a['Values'], 3, labels=False)
print("处理后的a列DataFrame:")
print(df_a)

# 处理b列
b = [9, 8, 7, 8, 9, 1]
df_b = pd.DataFrame({'Values': b})
df_b['bin'] = pd.cut(df_b['Values'], 3, labels=False)
print("\n处理后的b列DataFrame:")
print(df_b)

运行这段代码后,就能得到你期望的两个DataFrame,分别包含原值和对应的分箱值。

实际场景:批量处理63个DataFrame

假设你的63个独立DataFrame都存在一个列表里(比如叫all_dfs),并且每个DataFrame中需要分箱的列名称都是Values(如果列名不同,把代码里的'Values'改成对应列名即可),我们可以用循环批量处理:

# 假设你的63个DataFrame都存储在all_dfs列表中
processed_dfs = []
for original_df in all_dfs:
    # 提取需要分箱的列,创建新的DataFrame
    temp_df = pd.DataFrame({'Values': original_df['Values'].copy()})
    # 添加分箱列
    temp_df['bin'] = pd.cut(temp_df['Values'], 3, labels=False)
    # 将处理后的DataFrame加入结果列表
    processed_dfs.append(temp_df)

处理完成后,processed_dfs列表里的每个元素就是对应原始DataFrame处理后的结果,每个都包含Values(原值)和bin(分箱值)两列。

小提示

  • 如果需要自定义分箱区间(而不是自动分成3箱),可以把pd.cut的第二个参数换成自定义的区间列表,比如pd.cut(temp_df['Values'], bins=[0,3,6,10], labels=False)
  • 如果分箱需要带标签(比如'低'、'中'、'高'),可以把labels=False改成labels=['low', 'medium', 'high'](记得标签数量要和分箱数匹配)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:29:55