's = (iowa_file_data.dtypes == 'object')' 如何使 's' 成为类型为 'Series' 的变量



我写(复制)了一个代码

iowa_file_data = pd.read_csv(iowa_train_prices_file_path)
#dtypes is a Series
s = (iowa_file_data.dtypes == 'object')

我得到iowa_file_datadataframe类型,dtypesSeries类型。但是s是如何变成Series的呢?(iowa_file_data.dtypes == 'object')的输出是否等于Series?

Pandas(以及底层numpy)使用__eq__操作符的特殊重载。目标是numpy数组、数据帧或序列之间的大多数操作仍然返回相同类型的对象。当操作符的一侧有一个级数,另一侧有一个标量时,标量在缺失的维度上被广播,以构建与初始级数具有相同大小(和索引)的级数,其中所有单元格都具有标量的值(和类型)。

所以是的,如果serSeries,那么ser == 'object'也是Series,其大小和索引与ser相同。

pandas使用array-broadcasting类似于numpy…因此,操作是对每个元素而不是对象本身执行的。(参见https://stackoverflow.com/a/29955358/9703451)

你想用你的查询完成什么?

可能重载了__eq__操作符

请看下面的例子

class A:
def __eq__(self, o: object) -> bool:
if isinstance(o, str):
return 13
return super().__eq__(o)

a = A()
# returns False
print(a == 2)
# returns 13 because of overriden __eq__ in A class
print(a == 's')

更多信息:Python文档。

最新更新