2016-07-07 8 views
-1

以下は私のデータフレームの小さなサンプルです。Pythonエラー:TypeError:dtyped [float64]配列と[bool]型のスカラーを比較できません

In [10]: df 
Out[10]: 
    TXN_KEY Send_Agent Pay_Agent Send_Amount Pay_Amount 
0  13272184 AWD120279 AEU002152  85.99  85.04 
1  13272947 ARA030122 AEV000034  402.01  400.00 
2  13273453 API185805 API190139  22.98  22.98 
3  13273870 ANO080012 API352676  490.00  475.68 
4  13274676 AUK359401 AED002782  616.16  600.87 
5  13274871 ACL000105 ACB020203  193.78  185.21 
6  13275194 ADA374245 ANP023424  100.00  98.50 


grouped = df.groupby('Send_Agent') 

Send_Amountが次のSend_Amountと同じである回数を計算する関数はうまくいきます。

def repeat_count(s): 
    return (s.shift() == s).sum() 

    In [35]: result = grouped.agg({'Send_Amount':[repeat_count]}) 

    In [36]: result 
    Out[36]: 
       Send_Amount 
       repeat_count 
Send_Agent 
A03010016    0 
A03020026    0 
A10000075    0 
A10000316    0 
A10000932    0 
A10060013    0 
A10080022    0 
A11120030    0 

しかし、私はSend_Amountは900〜1000であり、私がエラーを取得していますすべてのSend_Agentの数を計算しようとしています:

In [27]: def banded_txns(s): 
return(s >=900.00 & s < 1000.00).count() 

In [28]: result = grouped.agg({'Send_Amount':banded_txns}) 

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool] 

私はなぜそれを把握することはできませんよあるタイプの比較のためであり、他のタイプの比較のためではない。前もって感謝します。

答えて

3

あなたは、いくつかの括弧を逃している:

def banded_txns(s): 
    return ((s >= 900.00) & (s < 1000.00)).count() 
+0

sense.thanksになりohh..that。 –

+0

@vishal bhattこれまたは任意の回答があなたの質問を解決した場合、チェックマークをクリックして[受諾](http://meta.stackexchange.com/q/5234/179419)を検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 –

関連する問題