2017-06-30 43 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

相关问题