python - pandas:来自 groupby.value_counts() 的字典

标签 python pandas pandas-groupby

我有一个 pandas 数据框 df,其中包含 user 列和 product 列。它描述了哪个用户购买了哪些产品,说明了重复购买同一产品的情况。例如。如果用户 1 购买产品 23 三次,df 将为用户 1 包含 3 次条目 23。 对于每个用户,我只对该用户购买次数超过 3 次的产品感兴趣。因此,我执行 s = df.groupby('user').product.value_counts(),然后过滤 s = s[s>2],丢弃产品购买频率不够高。然后,s 看起来像这样:

user     product
3        39190         9
         47766         8
         21903         8
6        21903         5
         38293         5
11       8309          7
         27959         7
         14947         5
         35948         4
         8670          4

过滤数据后,我对频率(右列)不再感兴趣。

如何基于 s 创建 user:product 形式的字典?我无法访问该系列的各个列/索引。

最佳答案

选项 0

s.reset_index().groupby('user').product.apply(list).to_dict()

{3: [39190, 47766, 21903],
 6: [21903, 38293],
 11: [8309, 27959, 14947, 35948, 8670]}

选项 1

s.groupby(level='user').apply(lambda x: x.loc[x.name].index.tolist()).to_dict()

{3: [39190, 47766, 21903],
 6: [21903, 38293],
 11: [8309, 27959, 14947, 35948, 8670]}

选项 2

from collections import defaultdict

d = defaultdict(list)

[d[x].append(y) for x, y in s.index.values];

dict(d)

{3: [39190, 47766, 21903],
 6: [21903, 38293],
 11: [8309, 27959, 14947, 35948, 8670]}

关于python - pandas:来自 groupby.value_counts() 的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45111460/

相关文章:

Python 除法舍入

python - 禁用鼠标功能Python代码问题

python - 计算数据框 Pandas 的多列中某个值的出现次数

dictionary - Python 中的自定义字典查找

python - 根据另一个 pandas 数据框中的列的排序对列进行排序

python - 记录分组算法

python - .replace() 不替换元素

python-3.x - 在 Pandas DataFrame 中拆分列列表

python - Pandas 按两列分组,一列按行,另一列按列

php - 用php读取大json文件