我有以下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数组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]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。