Python 以另一列为条件对列中的值进行计数

Python 以另一列为条件对列中的值进行计数,python,pandas,Python,Pandas,我有一个数据集,我试图从中计算一列中1的数量,并根据另一列对它们进行分组,并将其作为值返回(在类中使用) 示例数据 import pandas as pd Current = {'Item': ['Chocolate', 'Chocolate', 'Sweets', 'Chocolate', 'Sweets', 'Pop'], 'Order': [0, 1, 1, 1, 1, 0], } Current = pd.DataFrame (Current, col

我有一个数据集,我试图从中计算一列中1的数量,并根据另一列对它们进行分组,并将其作为值返回(在类中使用)

示例数据

import pandas as pd
Current = {'Item':  ['Chocolate', 'Chocolate', 'Sweets', 'Chocolate', 'Sweets', 'Pop'],
        'Order': [0, 1, 1, 1, 1, 0], 
        }
Current = pd.DataFrame (Current, columns = ['Item','Order'])
然后,我想按每个项计算1的数量(实际表有25列)并返回此值

当存在使用此代码的值时,我成功地做到了这一点:

choc = Current[Current["Item"] == "Chocolate"]
print(choc["Order"].value_counts()[1])
(实际上,我会使用打印中的位在我的类中返回它,而不仅仅是打印它)

如果有计数,如巧克力计数,则此操作有效,但如果没有计数,则返回错误

pop = Current[Current["Item"] == "Pop"]
print(pop["Order"].value_counts()[1])
我的问题是:

有更好的方法吗?
如果没有,如果没有计数(例如,在pop的情况下),如何获取返回0的值?

如果要单独检查项目,可以执行以下操作:

Current[Current.Item=='Pop'].Order.sum()
对于不计数的项目,这将返回0

如果您希望总结作为最终结果,您可以:

Current.groupby('Item').agg({'Order':sum}).reset_index()

它将返回一个数据帧,其中包含每个项的计数值

IIUC:
Current.assign(计数=Current.groupby('item').Order.transform('sum'))
Current.groupby('item').Order()
。我只是不确定你想要什么作为最终结果。我认为您的示例不完整。很好,第一个解决方案正是我所追求的,第二个解决方案对其他应用程序来说很有趣-谢谢:)
Current[Current.Item=='Pop'].Order.sum()
Current.groupby('Item').agg({'Order':sum}).reset_index()