似乎 dataframe.le 不按列方式操作。
df = DataFrame(randn(8,12))
series=Series(rand(8))
df.le(series)
我希望其中的每一列df
都会比较series
(所以总共有 12 列比较series
,所以涉及 12 列 * 8 行比较)。但它似乎对于其中的每个元素df
都会与其中的每个元素进行比较,series
因此这将涉及 12(列)* 8(行)* 8(串联元素)比较。如何实现逐列比较?
第二个问题是,一旦我完成了逐列比较,我希望能够为每一行计算有多少“真”,我目前正在做astype(int32)
将 bool 变成 int 然后做sum
,这听起来合理吗?
让我举一个关于第一个问题的例子来说明我的意思(使用一个更简单的例子,因为 show 8*12 很难):
>>>from pandas import *
>>>from numpy.random import *
>>>df = DataFrame(randn(2,5))
>>>t = DataFrame(randn(2,1))
>>>df
0 1 2 3 4
0 -0.090283 1.656517 -0.183132 0.904454 0.157861
1 1.667520 -1.242351 0.379831 0.672118 -0.290858
>>>t
0
0 1.291535
1 0.151702
>>>df.le(t)
0 1 2 3 4
0 True False False False False
1 False False False False False
我期望df的第1列应该是:
1
False
True
因为1.656517 < 1.291535
isFalse
和-1.242351 < 0.151702
is True
,所以这是逐列比较。但是打印出来的是False False
.