Python中语法正确但列重命名失效问题求助
解决pandas无法重命名
dteday列的问题 问题原因
你在读取CSV时,通过index_col="dteday"把dteday设置成了DataFrame的索引列,而非普通数据列。rename(columns=...)方法仅能修改普通列的名称,对索引列无效,这就是cnt(普通列)能成功改名为y,但dteday(索引列)无法通过该方式改成ds的原因。
解决方案
提供两种可行的处理方式:
方式一:读取时不设索引,先重命名再设索引
这种方式更直观,先将dteday当作普通列处理,重命名后再设置为索引:
import pandas as pd import numpy as np # 读取文件时不指定index_col,保留dteday为普通列 data = pd.read_csv("Daily Bike Sharing.csv", parse_dates=True) # 选择需要的列,记得包含dteday dataset = data.loc[:,["dteday","cnt","holiday","workingday","weathersit", "temp","atemp","hum","windspeed"]] # 一次性重命名目标列 dataset = dataset.rename(columns={'cnt': 'y', 'dteday': 'ds'}) # 如果需要将ds设为索引,执行此步骤 dataset = dataset.set_index('ds') dataset.head(1)
方式二:直接修改索引名称
如果需要保留读取时设置索引的逻辑,可以直接修改索引的名称,而非用列重命名的方法:
import pandas as pd import numpy as np data = pd.read_csv("Daily Bike Sharing.csv", index_col="dteday", parse_dates=True) dataset = data.loc[:,["cnt","holiday","workingday","weathersit", "temp","atemp","hum","windspeed"]] dataset = dataset.rename(columns={'cnt': 'y'}) # 方法1:用rename的index参数修改索引名 dataset = dataset.rename(index={'dteday': 'ds'}) # 方法2:直接修改index.name属性,更简洁 # dataset.index.name = 'ds' dataset.head(1)
内容的提问来源于stack exchange,提问作者Mr Pool
相关产品推荐
相关产品推荐

