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

处理Wage数据集分箱时如何解决pandas.get_dummies一维数据异常

解决分箱时触发"Data must be 1-dimensional"异常的问题

看起来你在处理Wage.csv的分箱操作时踩了一个常见的pandas坑——这个错误几乎都是因为你传给分箱函数的不是一维数据导致的,我来帮你快速定位和修复:

核心原因

最常见的场景是:你不小心用了双括号取列(比如data[['age']]),这会返回一个二维的DataFrame对象,而pd.cut/pd.qcut这类分箱函数要求输入必须是一维的Series。如果你的data_x是用双括号定义的,那这就是问题根源。

修复步骤

1. 先确认你的输入数据类型

先跑两行代码检查:

print(type(data_x))  # 正常应该输出 <class 'pandas.core.series.Series'>
print(data_x.ndim)   # 正常应该输出 1

如果输出是DataFrame或者维度为2,那直接修改取列方式即可。

2. 修正分箱代码

把取列的双括号改成单括号,确保传入一维Series:

# 正确:单括号取列,返回一维Series
data_x = data['age']

# 执行分箱操作(示例:把年龄分成5个等宽区间)
age_bins = pd.cut(data_x, bins=5, labels=['青年', '中青年', '中年', '中老年', '老年'])

# 或者用等频分箱(每个区间样本数大致相等)
age_qbins = pd.qcut(data_x, q=5)

3. 验证结果

可以把分箱结果合并到原数据集里查看效果:

data['age_bin'] = age_bins
print(data[['age', 'age_bin', 'wage']].head())

额外排查:如果用statsmodels的工具分箱

如果你是用statsmodels里的分箱函数(比如sm.tools.categorical),同样要确保输入是一维的:

from statsmodels.tools import categorical
age_cats = categorical(data_x, bins=5, drop=True)

这个问题其实很容易解决,核心就是区分开pandas里单括号(取Series)和双括号(取DataFrame)的差异~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:06:49