0

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(一連の要素)の比較が含まれます。列ごとの比較を行うにはどうすればよいですか?
2番目の質問は、列ごとの比較が完了したら、各行に「true」がいくつあるかをカウントできるようにしたいということです。現在、astype(int32)bool を int に変換してから do を実行していますが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.291535isFalse-1.242351 < 0.151702isであるためTrue、これは列ごとの比較です。ただし、印刷はFalse False.

4

1 に答える 1

1

あなたの質問の最初の部分を理解しているかどうかはわかりませんが、2番目の部分に関しては、次Trueを使用してブール値の DataFrame で s を数えることができsumます。

In [11]: df.le(s).sum(axis=0)
Out[11]:
0     4
1     3
2     7
3     3
4     6
5     6
6     7
7     6
8     0
9     0
10    0
11    0
dtype: int64

.

基本的leに、各列のテストです:

In [21]: df[0] < s
Out[21]:
0    False
1     True
2    False
3    False
4     True
5     True
6     True
7     True
dtype: bool

各インデックスのテスト対象:

In [22]: df[0].loc[0] < s.loc[0]
Out[22]: False
于 2013-05-30T14:34:38.530 に答える