创建后如何更改 Pandas 系列的索引值?

pandas 系列构造函数将根据给定的数据自动创建系列索引标签。如果要指定那些索引标签,我们可以使用pandas系列函数的index关键字参数分别给出这些索引值。

Python字典是pandas系列的数据,我们没有指定任何索引标签,那么python字典值的键作为索引标签。

也可以在创建后指定或更改 pandas Series 对象的索引标签。可以通过使用 pandas 系列构造函数的 index 属性来完成。

示例

import pandas as pd

# create a series
s = pd.Series([1,2,3,4,6])

print(s)

# change the index
s.index = list('ABCDE')
print('\nSeries with new index')
print(s)

解释

pd 是导入pandas 包时定义的pandas 包别名。之后使用pandas Series 函数创建了一个简单的pandas Series 对象,这里的数据是一个整数列表。

并且未指定我们数据的索引标签,但 pandas Series 构造函数自动为我们的数据创建了一个索引标签,该标签来自 0-4 个值。

在本例中,我们通过使用索引属性从 0、1、2、3、4 到 A、B、C、D、E 更改了索引标签。

输出结果

0   1
1   2
2   3
3   4
4   6
dtype: int64

Series with new index
A   1
B   2
C   3
D   4
E   6
dtype: int64

上面的输出块中有两组,一组是我们初始系列对象的输出,带有自动生成的索引标签。第二个块是更改索引标签后系列对象 's' 的输出。

在这里,我们将 pandas Series 对象的索引标签从整数值更改为对象数据类型。

示例

这个例子将告诉你另一种在创建后更改我们的 pandas Series 对象的索引标签的方法。这里我们有pandas 系列功能中的函数,用于更改系列索引标签或更改系列对象的名称。Series.rename()

import pandas as pd

# create a series
s = pd.Series([1,2,3,4,6])

print(s)

# change the index
s = s.rename(lambda x: x**2)
print('\nSeries with new labels')
print(s)

解释

lambda 函数作为Series.rename方法的参数提供,这个 python lambda 函数将为我们的索引标签生成平方值。

使用这些生成的平方值,该Series.rename方法将返回一个新的系列对象作为输出,并且不会更新实际的系列对象 's'。这就是为什么在这里我们再次将结果对象重新分配给系列对象“s”。

输出结果

0   1
1   2
2   3
3   4
4   6
dtype: int64

Series with new labels
0   1
1   2
4   3
9   4
16  6
dtype: int64

第一个块是带有默认索引标签的初始系列对象的输出,第二个是带有更新索引标签的结果系列对象。