首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pivot pandas数据帧具有多索引列

Pivot pandas数据帧具有多索引列
EN

Stack Overflow用户
提问于 2020-08-13 00:01:44
回答 1查看 33关注 0票数 1

我正在努力解决如何将数据帧转换为具有多索引列的问题。

我有一个这样的数据帧:

代码语言:javascript
运行
复制
data = pd.DataFrame({"name":["a", "a", "b", "b", "b", "b",  "c", "c"], 
                     "month":[1, 1, 2, 3, 1, 1, 1, 3], 
                     "buy_sell":["sell", "buy", "sell", "buy", "sell", "buy", "sell", "buy"],
                     "value":[10, 20, 30, 40, 20, 80, 50, 60]})
data

我想把它转换成一个宽格式。索引是name,对于列,我希望使用monthbuy_sell的组合创建多索引

或者,如果不是多索引的列,我希望旋转数据帧,以便这些列具有足够的值,如sell_1buy_1sell_2buy_2等。

任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-13 00:07:06

您可以使用set_index()unstack()

代码语言:javascript
运行
复制
(data.set_index(['name','month','buy_sell'])['value']
      .unstack(['month','buy_sell']))

输出:

代码语言:javascript
运行
复制
month        1           2     3
buy_sell  sell   buy  sell   buy
name                            
a         10.0  20.0   NaN   NaN
b         20.0  80.0  30.0  40.0
c         50.0   NaN   NaN  60.0

如果您坚持让这些列包含所有NaN,则可以一次使用一个级别的unstack

代码语言:javascript
运行
复制
(data.set_index(['name','month','buy_sell'])['value']
      .unstack('month').unstack('buy_sell')
     )

输出:

代码语言:javascript
运行
复制
month        1         2           3     
buy_sell   buy  sell buy  sell   buy sell
name                                     
a         20.0  10.0 NaN   NaN   NaN  NaN
b         80.0  20.0 NaN  30.0  40.0  NaN
c          NaN  50.0 NaN   NaN  60.0  NaN
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63380414

复制
相关文章

相似问题

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