2017-06-30 12 views
1

データフレームの列クラスは0と1の2つの値で構成されます。クラス0の行数とクラス1の行数をカウントします。Pandasデータフレームから列の値を取得して条件をチェックする方法

genuine_count=0 
fraud_count=0 
if credit_card_df['Class'] == 1: 
    fraud_count +=1 
else: 
    genuine_count +=1 
print "Genuine transactions"+genuine_count 
print "Fraud transactions"+fraud_count 

私は

ValueError        Traceback (most recent call last) 
<ipython-input-12-2e8ec920b69d> in <module>() 
     1 genuine_count=0 
     2 fraud_count=0 
----> 3 if credit_card_df['Class'] == 1: 
     4  fraud_count +=1 
     5 else: 

C:\Users\JAYASHREE\Anaconda2\lib\site-packages\pandas\core\generic.pyc in __nonzero__(self) 
    890   raise ValueError("The truth value of a {0} is ambiguous. " 
    891       "Use a.empty, a.bool(), a.item(), a.any() or a.all()." 
--> 892       .format(self.__class__.__name__)) 
    893 
    894  __bool__ = __nonzero__ 

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

は親切に私が

答えて

1

をresolve.Thanks役立つ、このエラーを取得していますだけで実行します。

fraud_count = (credit_card_df['Class'] == 1).sum() 
genuine_count = (credit_card_df['Class'] == 0).sum() 

print "Genuine transactions {}.".format(genuine_count) 
print "Fraud transactions {}.".format(fraud_count) 

こちらがお役に立てば幸いです。

2

ありがたいことに、pandasはすでにあなたのためにこれを書いています:

credit_card_df['Class'].value_counts() 

また、あなたがあなた自身のフォーマットで印刷する場合:

genuine_count, fraud_count = credit_card_df['Class'].value_counts(sort=True) 

print "Genuine transactions"+genuine_count 
print "Fraud transactions"+fraud_count 
+2

私はあなただけ 'genuine_countで出力を解凍することができると思います、fraud_count = credit_card_df ['Class']。value_counts() '、次に印刷します。素晴らしいアイディア。 – Abdou

+2

これは実際に私の最初の選択肢でしたが、 'value_counts()'によって返された系列は常にソートされていました。私は明示的にそれを行うことができると思います。なぜならそれは常に暗黙のものより優れているからです。 :) – jack6e

関連する問題