Python 熊猫:为什么通过整数索引访问元素会将不同的对象返回到命名索引

Python 熊猫:为什么通过整数索引访问元素会将不同的对象返回到命名索引,python,pandas,indexing,Python,Pandas,Indexing,当通过数字索引或命名索引访问Pandas系列中的元素时,将返回相同的值。但是,当对两个返回值使用“is”比较运算符时,将返回False import pandas as pd ser = pd.Series([100, 200, 300, 400], ['alpha', 'bravo', 'charlie', 'delta']) print(ser[0] == ser['alpha']) print(ser[0] is ser['alpha']) 输出: True False 有人能解释

当通过数字索引或命名索引访问Pandas系列中的元素时,将返回相同的值。但是,当对两个返回值使用“is”比较运算符时,将返回False

import pandas as pd

ser = pd.Series([100, 200, 300, 400], ['alpha', 'bravo', 'charlie', 'delta'])

print(ser[0] == ser['alpha'])
print(ser[0] is ser['alpha'])
输出:

True
False

有人能解释为什么这两个方法返回不同的对象吗?结果是值的副本,而不是序列中的实际对象吗?

因为熊猫每次都返回一个副本(新对象):

In [23]: id(ser['alpha'])
Out[23]: 146103488

In [24]: id(ser['alpha'])
Out[24]: 146103536

In [25]: id(ser['alpha'])
Out[25]: 146103560

In [26]: id(ser[0])
Out[26]: 146103584

In [27]: id(ser[0])
Out[27]: 146103512

In [28]: id(ser[0])
Out[28]: 146103608

因为熊猫每次都返回一个副本(新对象):

In [23]: id(ser['alpha'])
Out[23]: 146103488

In [24]: id(ser['alpha'])
Out[24]: 146103536

In [25]: id(ser['alpha'])
Out[25]: 146103560

In [26]: id(ser[0])
Out[26]: 146103584

In [27]: id(ser[0])
Out[27]: 146103512

In [28]: id(ser[0])
Out[28]: 146103608