Python 以另一列为条件对列中的值进行计数
我有一个数据集,我试图从中计算一列中1的数量,并根据另一列对它们进行分组,并将其作为值返回(在类中使用) 示例数据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
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()