python - Transforming dataframe by making column using unique row values python pandas
问题描述
I have a following dataframe
Name Activities
Eric Soccer,Baseball,Swimming
Natasha Soccer
Mike Basketball,Baseball
I need to transform it into following dataframe
Activities Name
Soccer Eric,Natasha,Mike
Swimming Eric
Baseball Eric,Mike
Basketball Mike
how should I do it?
解决方案
Using pd.get_dummies
First, use get_dummies
:
tmp = df.set_index('Name').Activities.str.get_dummies(sep=',')
Now using stack
and agg
:
tmp.mask(tmp.eq(0)).stack().reset_index('Name').groupby(level=0).agg(', '.join)
Name
Baseball Eric, Mike
Basketball Mike
Soccer Eric, Natasha
Swimming Eric
Using str.split
and melt
(df.set_index('Name').Activities.str.split(',', expand=True)
.reset_index().melt(id_vars='Name').groupby('value').Name.agg(', '.join))
推荐阅读
- python-3.x - 列重命名在jupyter笔记本中不起作用
- javascript - 如何使用 Laravel 和 webpack 将 node_modules 中的 javascript 对象导入 Vue
- r - 重新格式化累积数据
- jhipster-gateway - jhipster 网关:WebSocket 握手期间出错:意外的响应代码:403
- ms-access - 基于具有多个复选框的表单访问查询
- clojure - 无法从 BufferedImage 创建 Graphics2d 对象
- php - PHPUnit中的嵌套数组键值断言
- python - 由于两个错误,我无法使用 pip 在我的 Mac 中安装 Pygame
- node.js - 从 child_process.exec 和 cmd 执行命令
- google-bigquery - 报表的数据源可以通过大查询程序吗?