如何使用Python将DataFrame的所有列名向左偏移?
解决方案:将宽格式DataFrame转换为长格式
你需要将宽格式的DataFrame转换为长格式,这可以通过pandas的melt()函数快速实现,以下是具体步骤:
核心思路
原始宽表中,每行对应一个样本,列是不同的特征;转换后的长表会将所有特征列拆分为两列(特征名、特征值),同时保留样本的唯一标识。
代码实现
1. 导入依赖
import pandas as pd
2. 执行转换
假设你的原始DataFrame第一列为样本标识(如ID),其余列为特征列:
# 将宽表转长表 long_format_df = df.melt( id_vars=df.columns[0], # 指定样本标识列(保留不被拆分的列) var_name="Variable", # 新的特征名列的名称 value_name="Value" # 新的特征值列的名称 )
如果原始DataFrame没有单独的ID列,以索引作为样本标识:
# 先将索引转为显式ID列 df = df.reset_index(names="ID") # 执行转换 long_format_df = df.melt(id_vars="ID", var_name="Variable", value_name="Value")
注意事项
由于你的DataFrame维度为(25000, 20000),转换后会生成约5亿行数据(25000 × 19999),建议:
- 确保内存充足,必要时可以优化数据类型(比如将float64转为float32)
- 若内存不足,可考虑分块处理或使用Dask等大数据工具
内容的提问来源于stack exchange,提问作者thdk13
相关产品推荐
相关产品推荐

