Python 为什么熊猫系列“in”的操作与其他数据结构不同?

Python 为什么熊猫系列“in”的操作与其他数据结构不同?,python,pandas,iteration,series,membership,Python,Pandas,Iteration,Series,Membership,大多数数据结构利用Python的in操作符返回键或值。熊猫系列混合了这些。我的问题是为什么它们是混合的?这是否有功能上的目的 明确地说,我不是在问机械是如何工作的;这已经被问了很多次了。我在问为什么它是以这种(可以说是违反直觉的)方式实现的 我之所以说违反直觉,是因为它会导致如下行为: import pandas as pd import numpy as np df = pd.DataFrame(np.ones((3,3)),columns=['a','b','c']) df.replace

大多数数据结构利用Python的
in
操作符返回
。熊猫系列混合了这些。我的问题是为什么它们是混合的?这是否有功能上的目的

明确地说,我不是在问机械是如何工作的;这已经被问了很多次了。我在问为什么它是以这种(可以说是违反直觉的)方式实现的

我之所以说违反直觉,是因为它会导致如下行为:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.ones((3,3)),columns=['a','b','c'])
df.replace(1,'abc',inplace=True)

a = df['a']
print([x in a for x in a])

# This will print
# [False, False, False]
我能想到的每一个其他数据结构(包括熊猫数据帧)都将返回一个
True
列表,而不是
False
,因为成员身份(
a
中的x)和迭代(
a
中的x)对同一项进行操作,要么是
(类似字典),要么是
(类似列表)

TLDR:序列对象迭代
并检查
中的成员资格。这个实现背后的原因是什么



另外,如果有人想知道如何迭代键,只需在Series对象上使用“.values()”方法即可。这是最棒的。

我不确定这是不是合适的平台。这是熊猫开发团队最好回答的实现细节。@wkgrcdsam是的,这不是一个使用问题,而是一个一般性的查询。根据他们的建议,我将其发布到。