pandas 分组合并元素后如何再重新组合。

发布于 2022-09-12 04:49:56 字数 922 浏览 24 评论 0

原数据是这样的

res = [
    {"user_id": 1000, "log": ["0.3", "0.7", "1"]},
 {"user_id": 2000, "log": ["0.3", "0.7", "1"]},
 {"user_id": 1000, "log": ["0.3", "0.7", "1"]},
 {"user_id": 2000, "log": ["0.3", "0.7", "1"]}
]

统计log里的数值出现的次数再重新组合新的列表。

想要实现的效果如下,

# 统计到了分别出现了2次
res = [
    {"user_id": 1000,'0.3':2,'0.7':2,'1':2},
 {"user_id": 2000,'0.3':2,'0.7':2,'1':2},
]

我的代码,只实现了部分,还不太正确,后面没有太多思路。请教一下

x = pd.DataFrame(res)
res = x.groupby(['user_id'])['log'].apply(lambda x:np.concatenate(list(x))).reset_index()
x['log'] = res.apply(lambda x: dict(Counter(x['log'])),axis=1)
print(x)

输出

   user_id                           log
0     1000  {'0.3': 2, '0.7': 2, '1': 2}
1     2000  {'0.3': 2, '0.7': 2, '1': 2}
2     1000                           NaN
3     2000                           NaN

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

時窥 2022-09-19 04:49:56

tmp = x.groupby(["user_id"])['log'].apply(lambda x: Counter(np.concatenate(list(x))))

res = tmp.unstack().reset_index()

res = res.apply(lambda x: x.to_dict(), axis=1)

image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文