Вращение столбца в Pandas на основе групп и динамических c имен столбцов - PullRequest
0 голосов
/ 29 мая 2020

У меня есть фрейм данных в 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 column), который должен быть следующим с именами столбцов, соединенных со значениями tname, взятыми из других столбцов (@ dt,@num и @ ve c)

 **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

Я пытаюсь выполнить поворот, используя pandas сводная таблица, но не могу получить в формате ниже, который мне действительно нужен. Буду признателен за любую помощь.

1 Ответ

1 голос
/ 29 мая 2020

Можно сделать:

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
...