【发布时间】:2020-06-20 14:02:03
【问题描述】:
我想使用 pandas groupby 来计算每个农场中动物组合的出现次数(由 farm_id 表示)。我正在尝试计算每种动物组合的农场数量。
想要的输出应该是这样的:
Out[6]:
combo count
0 cow 1
1 [cow, chicken] 1
2 [cow, pig, chicken] 2
对于以下数据框:
df = pd.DataFrame([['cow',0],['chicken',0],
['cow',1],
['chicken',3],['pig',3],['cow',3],
['pig',4],['cow',4],['chicken',4]]
,columns=['animals','farm_id'])
df
Out[4]:
animals farm_id
0 cow 0
1 chicken 0
2 cow 1
3 chicken 3
4 pig 3
5 cow 3
6 pig 4
7 cow 4
8 chicken 4
注意动物出现的顺序并不重要。
我试过这个:
df.groupby('farm_id').agg({'animals':'unique'})
Out[7]:
animals
farm_id
0 [cow, chicken]
1 [cow]
3 [chicken, pig, cow]
4 [pig, cow, chicken]
这给了我组合,但 (1) 考虑了排序以及 (2) 我不确定如何将计数生成为单独的列。
【问题讨论】:
标签: python pandas pandas-groupby