按编号索引或命名索引访问Pandas Series中的元素时,将返回相同的值。但是,当使用'是'对两个返回值的比较运算符,返回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
有人可以解释为什么这两个方法会返回不同的对象吗?结果是值的副本,而不是系列中的实际对象吗?
答案 0 :(得分:0)
因为pandas每次都返回一个副本(新对象):
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