pandas 分组合并元素后如何再重新组合。
原数据是这样的
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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)