На пандах версии 0.19.2 у меня есть следующий фрейм данных с мультииндексом:
import pandas as pd
import numpy as np
arrays = [[2001, 2001, 2002, 2002, 2002, 2003, 2004, 2004],
['A', 'B', 'A', 'C', 'D', 'B', 'C', 'D']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
s = pd.Series(np.random.randn(8), index=index, name='signal')
, который выглядит следующим образом:
first second
2001 A -2.48
B 0.95
2002 A 0.55
C 0.65
D -1.32
2003 B -0.25
2004 C 0.86
D -0.31
Я хочу получить итоговый фрейм данных, гдестолбцы являются уникальными «вторыми», а индексы являются «первыми» индексами, как показано ниже:
A B C D
2001 -2.48 0.95 NaN NaN
2002 0.55 NaN 0.65
2003 NaN -0.25 NaN NaN
2004 NaN NaN 0.86 -0.31
Есть идеи, как это можно сделать?Я играл с groupby()
, как показано ниже, но нигде не смог получить
s.groupby(level=1).apply(lambda x: "to do")
Связанный вопрос: Python Pandas - как группировать по мультииндексу how-to-do-groupий-на-мультииндекс