如何在创建 Pandas Series 后更改其索引值?


Pandas Series 构造函数会根据给定的数据自动创建 Series 索引标签。如果要指定这些索引标签,可以使用 Pandas Series 函数的 index 关键字参数单独给出这些索引值。

如果 Python 字典是 Pandas Series 的数据,并且没有指定任何索引标签,则 Python 字典值的键将作为索引标签。

也可以在创建 Pandas Series 对象后指定或更改其索引标签。这可以通过使用 Pandas Series 构造函数的 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('
Series with new index') print(s)

解释

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

并且没有为我们的数据指定索引标签,但是 Pandas Series 构造函数已经为我们的数据自动创建了一个索引标签,这些标签的值是从 0 到 4。

在这个示例中,我们使用 index 属性将索引标签从 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

上面的输出块中有两个集合,一个块是我们初始 Series 对象的输出,带有自动生成的索引标签。第二个块是更改索引标签后的 Series 对象“s”的输出。

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

示例

此示例将告诉您另一种在创建后更改 Pandas Series 对象索引标签的方法。这里我们使用了 Pandas Series 功能中的 Series.rename() 函数,它用于更改 Series 索引标签或更改 Series 对象的名称。

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('
Series with new labels') print(s)

解释

lambda 函数作为参数传递给 Series.rename 方法,此 Python lambda 函数将为我们的索引标签生成平方值。

使用这些生成的平方值,Series.rename 方法将返回一个新的 Series 对象作为输出,并且不会更新实际的 Series 对象“s”。这就是为什么我们在这里再次将结果对象重新赋值给 Series 对象“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

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

更新于:2021年11月17日

4K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告