Преобразовать / преобразовать широкий массив данных pandas в длинную / табличную форму? - PullRequest
0 голосов
/ 02 мая 2018

У меня есть кадр данных, как показано ниже, с датами в виде столбцов, и я хочу преобразовать его в табличную (длинную) форму.

> PPPP = pd.DataFrame({'1/1/2001': [5,6,7,8,9],
>                      '1/1/2001':[45,46,47,48,49],
>                      '1/2/2001':[15,16,17,18,19],
>                      '1/3/2001':[25,26,27,28,29],
>                      'Category1':['aa','bb','cc','dd','ee'],
>                      'Category2':['XX','YY','ZZ','FF','KK']})

Буду очень признателен за любые советы о том, как это сделать, так как это стало для меня кошмаром. Я нахожу много информации о том, как сделать противоположное с помощью разворота (от длинного до широкого), но, похоже, нет материала для обратного. :(

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Использование stack

PPPP.set_index(['Category1','Category2']).stack()
Out[226]: 
Category1  Category2          
aa         XX         1/1/2001    45
                      1/2/2001    15
                      1/3/2001    25
bb         YY         1/1/2001    46
                      1/2/2001    16
                      1/3/2001    26
cc         ZZ         1/1/2001    47
                      1/2/2001    17
                      1/3/2001    27
dd         FF         1/1/2001    48
                      1/2/2001    18
                      1/3/2001    28
ee         KK         1/1/2001    49
                      1/2/2001    19
                      1/3/2001    29
dtype: int64
0 голосов
/ 02 мая 2018

Я предлагаю использовать melt:

df = PPPP.melt(['Category1','Category2'], value_name='a', var_name='b')
print (df)
   Category1 Category2         b   a
0         aa        XX  1/1/2001  45
1         bb        YY  1/1/2001  46
2         cc        ZZ  1/1/2001  47
3         dd        FF  1/1/2001  48
4         ee        KK  1/1/2001  49
5         aa        XX  1/2/2001  15
6         bb        YY  1/2/2001  16
7         cc        ZZ  1/2/2001  17
8         dd        FF  1/2/2001  18
9         ee        KK  1/2/2001  19
10        aa        XX  1/3/2001  25
11        bb        YY  1/3/2001  26
12        cc        ZZ  1/3/2001  27
13        dd        FF  1/3/2001  28
14        ee        KK  1/3/2001  29
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...