Python 为什么熊猫系列“in”的操作与其他数据结构不同?
大多数数据结构利用Python的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
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是的,这不是一个使用问题,而是一个一般性的查询。根据他们的建议,我将其发布到。