У меня есть pandas датафрейм с двумя переменными id:
df = pd.DataFrame({'id': [1,1,1,2,2,3],
'num': [10,10,12,13,14,15],
'q': ['a', 'b', 'd', 'a', 'b', 'z'],
'v': [2,4,6,8,10,12]})
id num q v
0 1 10 a 2
1 1 10 b 4
2 1 12 d 6
3 2 13 a 8
4 2 14 b 10
5 3 15 z 12
Я могу развернуть таблицу с помощью:
df.pivot('id','q','v')
И получилось что-то близкое:
q a b d z
id
1 2 4 6 NaN
2 8 10 NaN NaN
3 NaN NaN NaN 12
Однако я действительно хочу (оригинальная нерасплавленная форма):
id num a b d z
1 10 2 4 NaN NaN
1 12 NaN NaN 6 NaN
2 13 8 NaN NaN NaN
2 14 NaN 10 NaN NaN
3 15 NaN NaN NaN 12
Другими словами:
- 'id' и 'num' мои индексы (как правило, я видел только "id" или "num", являющийся индексом, но мне нужно обоим, так как я пытаюсь восстановить исходную нерасплавленную форму)
- 'q' - мои столбцы
- 'v' - мои значения в таблице
Обновление
Я нашел решение закрыть из блог Wes McKinney:
df.pivot_table(index=['id','num'], columns='q')
v
q a b d z
id num
1 10 2 4 NaN NaN
12 NaN NaN 6 NaN
2 13 8 NaN NaN NaN
14 NaN 10 NaN NaN
3 15 NaN NaN NaN 12
Однако формат не совсем то же, что и выше.