如何格式化含子列的Kaggle数据集以适配ML回归模型?
处理带多级表头的Kaggle数据集(适配回归模型)
你的问题核心是数据集存在多级表头(子列结构),加上文件带BOM编码导致直接读取后出现大量Unnamed列名。以下是分步解决方法:
1. 正确读取带多级表头的数据集
首先解决编码问题(开头的是UTF-8 BOM标记),同时指定读取前两行作为多级表头:
import pandas as pd # 用utf-8-sig处理BOM,header=[0,1]读取前两行作为多级表头 data = pd.read_csv('Residential-Building-Data-Set.csv', encoding='utf-8-sig', header=[0, 1])
2. 整理多级表头为单级列名
多级表头不利于后续ML处理,我们可以把主列和子列合并成有意义的单级列名,同时过滤空值:
# 合并多级表头,处理空的子列名 data.columns = ['_'.join(col).strip().replace('Unnamed: ', '') for col in data.columns.values] # 进一步清理:如果合并后列名只剩主列(子列为空),则保留主列名 data.columns = [col.split('_')[0] if col.endswith('_') else col for col in data.columns]
3. 清理无效列
删除全为空值的列(这些就是之前的Unnamed空列):
# 删除所有值都是NaN的列 data = data.dropna(axis=1, how='all')
4. 验证与后续处理
查看处理后的列名和数据:
print(data.columns) print(data.head())
之后就可以按照回归模型的需求,继续做缺失值填充、特征编码、划分训练测试集等常规ML预处理步骤。
内容的提问来源于stack exchange,提问作者Vedanti Pawar
相关产品推荐
相关产品推荐

