使用 Pandas 透视完整数据框 [重复]
Posted
技术标签:
【中文标题】使用 Pandas 透视完整数据框 [重复]【英文标题】:Pivot full dataframe using Pandas [duplicate] 【发布时间】:2021-12-12 09:49:45 【问题描述】:我有一个数据集 df,我想在其中旋转数据以使行值变为列。
数据
id Date consumed available
aa q122 727.2 272.8
aa q222 975.7 24.3
bb q122 0 1000
bb q222 117.3 882.7
希望
id q122_consumed q122_available q222_consumed q222_available
aa 727.2 272.2 975.7 24.3
bb 0 1000 117.3 882.7
正在做
out = df[['id', 'Date']].join(
df.assign(consumed=df['consumed'],
available=df['available'])
.groupby('id')[['consumed', 'available']].cumsum()
).pivot('id', 'Date', ['consumed', 'available'])
out.columns = out.columns.to_flat_index().map('_'.join)
但是,我没有得到想要的输出。任何建议表示赞赏。
【问题讨论】:
【参考方案1】:使用pivot方法:
df.pivot(index="id", columns="Date", values=["consumed", "available"])
# output
consumed available
Date q122 q222 q122 q222
id
aa 727.2 975.7 272.8 24.3
bb 0.0 117.3 1000.0 882.7
【讨论】:
谢谢。有什么方法可以制作单独的列吗?消耗 q122 消耗 q222 可用 q122 可用 q222?df.columns = ['_'.join(c) for c in df.columns]
?
我删除了关于列的答案 - @luigigi 做得更好:)
谢谢 Pav3k。谢谢@luigigi - 我是在 Pav3k 的行之后添加这一行吗?
@Lynn 是的,或者您可以使用之前使用的线路。我猜同样的事情以上是关于使用 Pandas 透视完整数据框 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pandas 时如何打印多达 3,000 行数据框 [重复]