От unstack () к фрейму данных в Pandas - PullRequest
0 голосов
/ 07 мая 2019

Здравствуйте, я пытаюсь создать новый фрейм данных из unstack () исходного фрейма.

  • Мой исходный фрейм данных (df) следующий:

    idx = [np.array(['Jan', 'Jan', 'Feb', 'Mar', 'Mar', 'Mar']),np.array(['A1', 'A2', 'A2', 'A1', 'A3', 'A4'])]
    data = [{'x': 1, 'y': 50}, {'x': 5, 'y': 40}, {'x': 3, 'y': 20}, {'x': 2, 'y': 70}, {'x': 7, 'y': 10}, {'x': 3, 'y': 80}]
    df = pd.DataFrame(data, index=idx, columns=['x','y'])
    df.index.names=['date','type']
    

И это выглядит так:

           x   y
date type
Jan  A1    1  50
     A2    5  40
Feb  A2    3  20
Mar  A1    2  70
     A3    7  10
     A4    3  80
  • Моя цель - создать новый фрейм данных (df2), который будет выглядеть так:

         xA1  xA2  xA3  xA4  yA1  yA2  yA3  yA4
    Jan    1    5  Nan  Nan   50   40  Nan  Nan
    Feb  Nan    3  Nan  Nan  Nan   20  Nan  Nan
    Mar    2  Nan    7    3   70  Nan   10   80
    

** Я пробовал следующий код:

df2 = df.unstack()

Это очень близко подходит ко мне, но я не знаю, как перейти отсюда к желаемому фрейму данных.

Спасибо

1 Ответ

2 голосов
/ 07 мая 2019

Таким образом, вы можете сделать unstack, а затем сгладить множественный индекс

s=df.unstack()
s.columns=s.columns.map(''.join)
s
Out[70]: 
      xA1  xA2  xA3  xA4   yA1   yA2   yA3   yA4
date                                            
Feb   NaN  3.0  NaN  NaN   NaN  20.0   NaN   NaN
Jan   1.0  5.0  NaN  NaN  50.0  40.0   NaN   NaN
Mar   2.0  NaN  7.0  3.0  70.0   NaN  10.0  80.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...