我有一个没有头的csv文件,有一个DateTime索引。我想重命名索引和列名,但使用df.rename()时,只有列名被重命名。虫子?我的版本是0.12.0
In [2]: df = pd.read_csv(r'D:\Data\DataTimeSeries_csv//seriesSM.csv', header=None, parse_dates=[[0]], index_col=[0] )
In [3]: df.head()
Out[3]:
1
0
2002-06-18 0.112000
2002-06-22 0.190333
2002-06-26 0.134000
2002-06-30 0.093000
2002-07-04 0.098667
In [4]: df.rename(index={0:'Date'}, columns={1:'SM'}, inplace=True)
In [5]: df.head()
Out[5]:
SM
0
2002-06-18 0.112000
2002-06-22 0.190333
2002-06-26 0.134000
2002-06-30 0.093000
2002-07-04 0.098667
发布于 2015-09-08 20:28:07
您还可以使用Index.set_names
,如下所示:
In [25]: x = pd.DataFrame({'year':[1,1,1,1,2,2,2,2],
....: 'country':['A','A','B','B','A','A','B','B'],
....: 'prod':[1,2,1,2,1,2,1,2],
....: 'val':[10,20,15,25,20,30,25,35]})
In [26]: x = x.set_index(['year','country','prod']).squeeze()
In [27]: x
Out[27]:
year country prod
1 A 1 10
2 20
B 1 15
2 25
2 A 1 20
2 30
B 1 25
2 35
Name: val, dtype: int64
In [28]: x.index = x.index.set_names('foo', level=1)
In [29]: x
Out[29]:
year foo prod
1 A 1 10
2 20
B 1 15
2 25
2 A 1 20
2 30
B 1 25
2 35
Name: val, dtype: int64
发布于 2020-08-21 19:56:50
对于单一索引:
df.index.rename('new_name')
对于多索引:
df.index.rename(['new_name','new_name2'])
我们也可以在最新的熊猫中使用这个:
发布于 2016-10-06 18:29:03
如果您想使用相同的映射来重命名列和索引,您可以这样做:
mapping = {0:'Date', 1:'SM'}
df.index.names = list(map(lambda name: mapping.get(name, name), df.index.names))
df.rename(columns=mapping, inplace=True)
https://stackoverflow.com/questions/19851005
复制相似问题