在Pandas中基于组和动态列名的Pivoting A列

问题描述 投票:0回答:1

我在python pandas中有一个数据框架,如下图。 (前两列,mygroup1 & mygroup2是groupby列)

  df = 

 **mygroup1  mygroup2   tname       @dt      @num   @vek**

   a         p          alpha        may      6       a
   b         q          alpha        june     8       b
   c         r          beta         may      9       c
   d         s          beta         june     11      d

我想对表(tname列中的值)进行数据透视,它应该是如下的,列名与tname值的连接来自其他列(@dt,@num和@vec)。

 **mygroup1  mygroup2    alpha@dt    alpha@num    alpha@vec    beta@dt  beta@num  beta@vec**
    a         p           may            6            a           nan     nan        nan
    b         q           june           8            b            nan    nan        nan
    c         r           nan            nan        nan            may     9          c
    d         s            nan           nan        nan            june    11         d

我试图做一个pivot使用pandas数据透视表,但不能够在下面的格式,我真的想。我将感谢任何帮助。

python pandas pivot-table pandas-groupby
1个回答
1
投票

你可以这样做。

new_df = df.set_index(['mygroup1','mygroup2','tname']).unstack('tname')
new_df.columns = [f'{y}{x}' for x,y in new_df.columns]
new_df = new_df.sort_index(axis=1).reset_index()

输出:

  mygroup1 mygroup2 alpha@dt  alpha@num alpha@vek beta@dt  beta@num beta@vek
0        a        p      may        6.0         a     NaN       NaN      NaN
1        b        q     june        8.0         b     NaN       NaN      NaN
2        c        r      NaN        NaN       NaN     may       9.0        c
3        d        s      NaN        NaN       NaN    june      11.0        d
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.