我有一个csv文件没有头,有一个日期时间索引。我想重命名索引和列名,但是使用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
rename
方法为应用于indexvalues要重命名为索引级别的名称:
考虑这一点的好方法是列和索引是同一类型的对象(
Index
或MultiIndex
),您可以通过转置来交换这两个对象。这有点混乱,因为索引名与列具有类似的含义,所以下面是一些更多的示例:
您可以在索引上看到重命名,它可以更改值1:
重命名级别名称时:
注意:此属性只是一个列表,您可以将其重命名为列表理解/映射。
当前选择的答案没有提到可用于重命名索引和列级别的
rename_axis
方法。在重命名索引级别时,Pandas有一些古怪之处。还有一个新的DataFrame方法可用于更改索引级别名称。
让我们看看数据帧
此数据帧对每个行和列索引都有一个级别。行和列索引都没有名称。让我们将行索引级别名称更改为“name s”。
rename_axis
方法还可以通过更改axis
参数来更改列级名称:如果使用某些列设置索引,则列名将成为新的索引级别名称。让我们将索引级别附加到原始数据帧:
注意原始索引没有名称。我们仍然可以使用
rename_axis
,但需要向它传递一个长度与索引级别数相同的列表。可以使用
None
有效地删除索引级别名称。系列工作类似,但有一些差异
让我们创建一个具有三个索引级别的系列
我们可以使用
rename_axis
类似于我们对数据帧的使用注意,序列下面有一个额外的元数据片段,名为
Name
。从数据帧创建序列时,此属性设置为列名。我们可以将字符串名称传递给
rename
方法来更改它数据帧没有这个属性,如果像这样使用,infact将引发一个异常
在pandas 0.21之前,您可以使用
rename_axis
重命名索引和列中的值。它已经被弃用了,所以不要这样做在Pandas 0.13及更高版本中,索引级别的名称是不可变的(类型
FrozenList
),不能再直接设置。必须首先使用Index.rename()
将新的索引级别名称应用于索引,然后使用DataFrame.reindex()
将新索引应用于数据帧。示例:对于熊猫版<;0.13
对于熊猫版>;=0.13
相关问题 更多 >
编程相关推荐