首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫加工的多种模式

熊猫加工的多种模式
EN

Stack Overflow用户
提问于 2022-03-30 17:00:15
回答 1查看 438关注 0票数 0

我显然是在处理稍微复杂和现实的数据,但是为了展示我的麻烦,让我们假设我们有这些数据:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

purchases_df = pd.DataFrame({"user_id": [100, 101, 100, 101, 200],
                      "date": ['2022-01-01', '2022-01-01','2022-01-01','2022-01-01', '2022-01-01'],
                      "purchase": ['cookies', 'jam', 'jam', 'jam', 'cashews']})

我想按日期找出购买方式的价值:

代码语言:javascript
运行
复制
agg_mode = purchases_df.groupby(['date', 'user_id'])['purchase'].agg(pd.Series.mode)
agg_mode

agg_mode将显示对于user_id 100,我们有两个模态值:[cookies, jam]。这对我来说很好,当涉及到真实的数据时,我们已经制定了一套规则,如果有一个平分,我们可以选择哪一种模式。问题是,为了使用这种启发式,我需要能够检查返回的多个模态值集是否包含某些值(比方说,如果返回了cookiesjam,我们总是只坚持jam。我找不到一种简单的方法来处理返回的多模态值:

代码语言:javascript
运行
复制
agg_mode_df = purchases_df.groupby(['date', 'user_id'])['purchase'].agg(pd.Series.mode).to_frame()
agg_mode_df.reset_index(inplace=True)
agg_mode_df

agg_mode_df是一个DataFrame,如果user_id有多个mode,那么purchase列(它现在保存了模态值)变成了具有numpy ndarraysobject dtype的列,而且我无法找到一种工作方法来将每个用户的模态值转换为list

我是不是想过头了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-30 17:07:06

IIUC,试着:

代码语言:javascript
运行
复制
agg_mode = purchases_df.groupby(['date', 'user_id'])['purchase'].agg(lambda x: x.mode().tolist())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71681271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档