我有以下 Dataframe :

               fk  name
0              105  Coca-Cola1
1              105  Coca-Cola1
2              106  Coca-Cola2
3              115  Coca-Cola5
4              115  Coca-Cola5
5              115  Coca-Cola5
6              108  Coca-Cola8
7              105  Coca-Cola1

我想计算出现频率:
[[105, Coca-Cola1, 3],
 [106, Coca-Cola2, 1],
 [115, Coca-Cola5, 3],
 [108, Coca-Cola8, 1]]

知道如何得到吗?

最佳答案

您可以将 groupby 与聚合 size 一起使用,然后是 reset_index ,最后由 numpy array DataFrame.values 转换为 numpy.ndarray.tolist :

df = df.groupby(['fk','name']).size().reset_index().values.tolist()
print (df)
[[105, 'Coca-Cola1', 3],
 [106, 'Coca-Cola2', 1],
 [108, 'Coca-Cola8', 1],
 [115, 'Coca-Cola5', 3]]

如果订单很重要,则将参数 sort=False 添加到 groupby :
df = df.groupby(['fk','name'], sort=False).size().reset_index().values.tolist()
print (df)
[[105, 'Coca-Cola1', 3],
 [106, 'Coca-Cola2', 1],
 [115, 'Coca-Cola5', 3],
 [108, 'Coca-Cola8', 1]]

关于python - 用数据框计算出现次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41590510/

10-10 18:19