我有一个数据框,看起来像这样:
Dog_breed Dog_name Points
============================================================
Monday Pug George 12
Tuesday Poodle Fido -15
Wednesday Pug Buddy 8
Thursday Dachshund Lyla -10
Friday Poodle Remi 9
Saturday Pug Kermit -5
Sunday Beagle Sara 3
对于每一种狗(即类别),我需要得到点的总和 - 对于某些行,它是正的,对某些人来说,它是负的 - 以及该品种的狗的数量。
目标是将每个品种的所有积分相加,计算每个品种在原始数据集中出现的次数,最后得到一个如下所示的数据框:
Quantity Overall_point_change
============================================
Pug 3 15
Poodle 2 -6
Dachshund 1 -10
Beagle 1 3
pandas可以这样做,还是需要循环?真的很难绕过这个问题 - 任何人都可以推荐一种方法来设置它吗?
答案 0 :(得分:4)
你正在寻找大熊猫' groupby
df.groupby('Dog_breed').agg(['count', 'sum'])
阅读以下内容以获得更加清晰的理解:http://pandas.pydata.org/pandas-docs/stable/groupby.html
答案 1 :(得分:2)
DF.groupby('Dog_breed').agg({'Points': sum, 'Dog_name' : 'count'})
可能会有更好的结果?只是因为它指定了应用于每列的聚合函数。