当前位置:  开发笔记 > 编程语言 > 正文

在列表的数据框中查找最常见的对

如何解决《在列表的数据框中查找最常见的对》经验,为你挑选了1个好方法。

我有一个带有列的数据框ID, Product.例如,

ID  Product
1   ['a','b']
2   ['a','b','e']
3   ['c','d']
4   ['a','b','c','d']

Product是一个列表字段,其中每个列表包含一个人拥有的产品.例如,1人ID有产品ab.我需要找到最受欢迎/最常见的产品对.在这个例子中,产品[a,b]是最受欢迎的.它必须是最常见的产品对,因为没有人可以拥有1种产品.



1> Nickil Mavel..:

1)itertools.combinations用于获取所有可能的对的组合,并将结果序列转换为它的列表表示,稍后需要将其提供给数据帧构造函数.

2)堆叠DF并分别取Series.value_counts().使用最高计数抓取索引Series.idxmax().


import itertools

comb = lambda x: list(itertools.combinations(x, 2))
L = df['Product'].map(comb).tolist()
pd.DataFrame(L).stack().value_counts(sort=False).idxmax()
Out[21]:
('a', 'b')

编辑:(基于评论说明新要求)

a, cnt = np.unique(df.Product.values, return_counts=True)
a[cnt==cnt.max()]
array([['a', 'b', 'e']], dtype=object)

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有