python - 如何在 Pandas 中组合常用分类列上的行
问题描述
我有以下数据框,我想将其转换为一种新格式,该格式根据“approver_type”中的分类值将所有者和批准者分开。这将导致基于“gid”值的行与包含组各自所有者和批准者的单独列合并。
起始数据框:
>>> sourcedf
gid group_name approver_type approver_name
0 5 foo owner joe
1 6 bar approver john
2 7 baz owner jill
3 7 baz approver bill
4 5 foo approver bob
5 7 baz approver jimmy
所需的数据框:
>>> df
gid group_name owners approvers
0 5 foo joe bob
1 6 bar NaN john
2 7 baz jill bill,jimmy
复制 sourcedf 的字典:
{'gid': {0: 5, 1: 6, 2: 7, 3: 7, 4: 5, 5: 7}, 'group_name': {0: 'foo', 1: 'bar', 2: 'baz', 3: 'baz', 4: 'foo', 5: 'baz'}, 'approver_type': {0: 'owner', 1: 'approver', 2: 'owner', 3: 'approver', 4: 'approver', 5: 'approver'}, 'approver_name': {0: 'joe', 1: 'john', 2: 'jill', 3: 'bill', 4: 'bob', 5: 'jimmy'}}
解决方案
pivot_table
与自我定义一起使用aggfunc
:join
df.pivot_table(index=['gid','group_name'],columns='approver_type',values='approver_name',aggfunc=','.join)
Out[36]:
approver_type approver owner
gid group_name
5 foo bob joe
6 bar john None
7 baz bill,jimmy jill
推荐阅读
- java - 从java中的for语句中调用方法
- node.js - “未安装对等依赖项”警告,但已安装
- node.js - 从 id 获取 steam 用户名
- autohotkey - 在 Windows 10 中运行的自动热键脚本问题
- python - scipy:如何使用 weibull_min.pdf?
- r - 在 beta 分布上查找给定 x 值的 y 值
- angular - 使用 Materialize-css 和 Angular Universal | “窗口未定义”错误
- bash - 在 Tcl foreach 循环中运行 sh 脚本
- c# - 有没有办法通过反射来判断自动属性和常规属性之间的区别?
- windows - 是什么让通过 Windows SMB 协议启动服务成为可能?