枢轴熊猫数据框具有多索引列

时间:2020-08-12 16:01:44

标签: python pandas pivot multi-index

我正在努力使数据框具有多索引列。

我有一个这样的数据框:

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

enter image description here

我想将其转换为宽格式。索引是name,对于列,我想使用monthbuy_sell

的组合创建多索引

enter image description here

或者如果不是多索引列,我想旋转数据框,以使列具有足够的值,例如sell_1buy_1sell_2buy_2等...

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

1 个答案:

答案 0 :(得分:1)

您可以使用set_index()unstack()

(data.set_index(['name','month','buy_sell'])['value']
      .unstack(['month','buy_sell']))

输出:

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一级:

(data.set_index(['name','month','buy_sell'])['value']
      .unstack('month').unstack('buy_sell')
     )

输出:

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