【发布时间】:2019-01-25 06:56:04
【问题描述】:
我的问题是关于 pandas 用于将类型为“object”的列与整数进行比较的规则。这是我的代码:
In [334]: df
Out[334]:
c1 c2 c3 c4
id1 1 li -0.367860 5
id2 2 zhao -0.596926 5
id3 3 sun 0.493806 5
id4 4 wang -0.311407 5
id5 5 wang 0.253646 5
In [335]: df < 2
Out[335]:
c1 c2 c3 c4
id1 True True True False
id2 False True True False
id3 False True True False
id4 False True True False
id5 False True True False
In [336]: df.dtypes
Out[336]:
c1 int64
c2 object
c3 float64
c4 int64
dtype: object
为什么“c2”列的所有人都得到True?
附:我也试过了:
In [333]: np.less(np.array(["s","b"]),2)
Out[333]: NotImplemented
【问题讨论】:
-
有趣的是,
df > 2和df < 2都产生了True -
我尝试覆盖类的 le(小于)和 ge(大于)例程以始终返回 False,并且 df > 2仍然返回 True。我的猜测是,出于某种原因,pandas 会覆盖每个对象以在比较时返回 True。
标签: python pandas dataframe comparison-operators