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

时间:2017-06-16 09:35:59

标签: python pandas indexing

按编号索引或命名索引访问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

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

1 个答案:

答案 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