Python 如何从dataframe中检索列值并检查条件

Python 如何从dataframe中检索列值并检查条件,python,pandas,dataframe,Python,Pandas,Dataframe,Dataframe列类由2个值0和1组成。我想计算类0的行数和类1的行数。我编写了如下代码 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 我得到了这个错误 V

Dataframe列类由2个值0和1组成。我想计算类0的行数和类1的行数。我编写了如下代码

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().
ValueError回溯(最近一次调用)
在()
1真实计数=0
2欺诈计数=0
---->3如果信用卡df['Class']==1:
4欺诈计数+=1
5其他:
C:\Users\JAYASHREE\Anaconda2\lib\site packages\pandas\core\generic.pyc in\uuuuu非零(self)
890 raise VALUERROR(“a{0}的真值不明确。”
891“使用a.empty、a.bool()、a.item()、a.any()或a.all()
-->格式(自类名称)
893
894 uuuuu bool uuuuuuu=uuuuuu非零__
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
请帮助我解决问题。谢谢你只需执行以下操作:

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)

我希望这能有所帮助。

谢天谢地,
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

我认为您可以使用
正版计数、欺诈计数=信用卡计数['Class']解压输出。value\u counts()
,然后打印。好主意。这实际上是我的第一个选择,但我不确定
value\u counts()
返回的序列总是会被排序的。我想我们可以明确地这样做,因为这总是比隐含的好。:)