2017-06-30 41 views
1

數據框柱類包括2個值0和1.I的要算多少行存在爲0級和多少行類1.I寫了這樣的代碼如何檢索大熊貓數據框中列值,檢查條件

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(). 

請幫我resolve.Thanks

回答

1

只要做到:

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 [ '級']。value_counts()',然後打印。好主意tho。 – Abdou

+2

這實際上是我的第一選擇,但我不肯定的系列返回通過'value_counts()'總是進行排序。我想我們可以明確地做到這一點,因爲這總比隱含的更好。 :) – jack6e

相關問題