#python #pandas #dataframe
Вопрос:
У меня есть длинный фрейм данных, который выглядит следующим образом, с двумя заголовками: первый с переменными, а второй только с датой в широком формате.
Компания | Цена | объем | |
---|---|---|---|
Дата | |||
1/1/11 | TSLA | 2 | 1 |
1/2/11 | TSLA | 2 | 1 |
1/1/11 | MSFT | 2 | 1 |
1/2/11 | MSFT | 2 | 1 |
Я хочу перевести его в длинный формат:
Цена | объем | |||
---|---|---|---|---|
Дата | TSLA | MSFT | TSLA | MSFT |
1/1/11 | 2 | 2 | 1 | 1 |
1/2/11 | 2 | 2 | 1 | 1 |
Если возможно, я хочу использовать для этого stack или unstack/ groupby. Предполагая, что у меня есть длинный фрейм данных, сохраненный как df — как бы я преобразовал его в фрейм данных pandas с именем wide?
Комментарии:
1.
df.pivot('date', 'company')
? документы панд очень полезны
Ответ №1:
Это set_index
с append=True
добавлением company
в качестве второго уровня мультииндекса, затем unstack
company
в столбцы:
df = df.set_index('company', append=True).unstack(level='company')
df
:
price volume
company MSFT TSLA MSFT TSLA
date
1/1/11 2 2 1 1
1/2/11 2 2 1 1
Фрейм данных:
df = pd.DataFrame({'company': {'1/1/11': 'MSFT', '1/2/11': 'MSFT'},
'price': {'1/1/11': 2, '1/2/11': 2},
'volume': {'1/1/11': 1, '1/2/11': 1}})