python - 具有多个索引的 Pandas 数据框重塑
问题描述
努力了解 Pandas 中的重塑函数。到目前为止,我可以对具有简单结构的数据框进行重塑,例如
d = {'id1': [1,1,1,2,2,2], 'id2': [1,1,1,1,1,1], 'value': [1,2,3,4,5,6], 'type':['A','B','C','A','B','C']}
tab = pd.DataFrame(data=d)
tab.pivot(index = 'id1', columns = "type", values = "value")
但是,在看起来更像这样的情况下,我在理解多索引模式时遇到了一些挑战。从概念上讲,在这种情况下我想要返回的是一个具有 3 行的新 df。索引都是id1
and id2
,因此第 1 行将是 and 的唯一组合的值,然后第 2 行将是id1=1
and并且最后一行 3 将是and 。id2=1
id1=1
id2=2
id1=2
id2=1
d = {'id1': [1,1,1,1,1,1,2,2,2], 'id2': [1,1,1,2,2,2,1,1,1], 'value': [1,2,3,4,5,6,7,8,9], 'type':['A','B','C','A','B','C','A','B','C']}
tab = pd.DataFrame(data=d)
tab.pivot(index = 'id1', columns = "type", values = "value")
解决方案
似乎更简单的选择是pivot_table
在 pandas 中使用函数:
d = {'id1': [1,1,1,1,1,1,2,2,2], 'id2': [1,1,1,2,2,2,1,1,1], 'value': [1,2,3,4,5,6,7,8,9], 'type':['A','B','C','A','B','C','A','B','C']}
tab4 = pd.DataFrame(data=d)
tab4.pivot_table(
values='value',
index=['id1', 'id2'],
columns='type')
产生以下内容,我相信这就是您所追求的:
type A B C
id1 id2
1 1 1 2 3
2 4 5 6
2 1 7 8 9
这是通过这个问题较早的帖子发现的。
注意:这是我对 SO 的第一个回答,所以如果我应该做些不同的事情,请告诉我!
推荐阅读
- mysql - 额外的表减慢了 mySQL 的执行时间
- postgresql - 如何存放套装
在 PostgreSQL 中正确进行 JWT 身份验证 - wordpress - WordPress - 以(Caldera)形式包含当前/活动产品详细信息
- elasticsearch - 用于过滤的 Elasticsearch DSL bool 查询
- python - 使用多层感知器进行异或分类
- ms-access - 作为多用户数据库访问
- python - 如何找到 2 组坐标的差异?如果坐标的差异小于或等于 5,则将其视为相似对
- python - Tkinter 使用按钮或按键调用功能
- javascript - 单击按钮刷新 div
- ethereum - Solidity:TypeError:函数声明为视图,但此表达式修改了状态,因此需要不可支付(默认)或应付