我有以下 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/