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

Pandas如何重命名无名称、以数字索引的列?

解决无名称DataFrame列重命名无效的问题

先确认列名的真实情况

首先要搞清楚当前DataFrame的列名到底是什么类型、具体值是什么,这是解决问题的关键。运行以下代码查看:

# 打印所有列名
print(train_dataset_with_pred_new_df.columns)
# 打印每个列名的类型
print([type(col) for col in train_dataset_with_pred_new_df.columns])

针对性解决方法

方法1:直接重新赋值列名列表(最稳妥)

不管原列名是什么类型,只要你明确列的顺序,直接给columns属性赋值新列表即可,这是最直接有效的方式:

new_column_names = [
    'timestamp', 'open', 'close', 'high', 'low', 'volume', 'CCI7', 'DI+',
    'DI-', 'ADX', 'MACD Main', 'MACD Signal', 'MACD histogram', 'Fisher Transform',
    'Fisher Trigger'
]
# 确保新列表长度和原DataFrame列数一致
train_dataset_with_pred_new_df.columns = new_column_names

方法2:修正rename的使用方式

如果坚持用rename方法,注意两个关键点:

  1. 确认键的类型和列名类型完全匹配:如果列名是整数(如int),就用整数当键;如果是字符串(如'0'),就用字符串当键。
  2. 原地修改或接收返回值:rename默认返回新的DataFrame,不会修改原数据,要么加inplace=True,要么把结果赋值给原变量:

示例(假设列名是整数类型):

# 方式A:赋值给原变量
train_dataset_with_pred_new_df = train_dataset_with_pred_new_df.rename(columns={
    0: 'timestamp', 1: 'open', 2: 'close', 3: 'high', 4: 'low', 
    5: 'volume', 6: 'CCI7', 7: 'DI+', 8: 'DI-', 9: 'ADX', 
    10: 'MACD Main', 11: 'MACD Signal', 12: 'MACD histogram', 
    13: 'Fisher Transform', 14: 'Fisher Trigger'
})

# 方式B:原地修改
train_dataset_with_pred_new_df.rename(columns={
    0: 'timestamp', 1: 'open', 2: 'close', 3: 'high', 4: 'low', 
    5: 'volume', 6: 'CCI7', 7: 'DI+', 8: 'DI-', 9: 'ADX', 
    10: 'MACD Main', 11: 'MACD Signal', 12: 'MACD histogram', 
    13: 'Fisher Transform', 14: 'Fisher Trigger'
}, inplace=True)

方法3:统一列名类型后再重命名

如果列名是特殊数值类型(比如numpy.int64而非Python原生int),可以先转换列名类型:

# 把列名转成整数类型
train_dataset_with_pred_new_df.columns = train_dataset_with_pred_new_df.columns.astype(int)
# 再用rename修改
train_dataset_with_pred_new_df.rename(columns={0: 'timestamp', ...}, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:15:36