У меня есть, я уверен, простая просторная проблема, но я не могу понять синтаксис, как справиться с этим, когда у меня в игре несколько столбцов.
Мои данные выглядят так:
>>> df.head()
s_name geo zip date value
0 A002X zip 00601 2010 1
1 A002Y zip 00601 2010 2
2 A003X zip 00601 2010 3
3 A003Y zip 00601 2010 4
...
. A002X zip 00602 2010 8
. A002Y zip 00602 2010 9
. A003X zip 00602 2010 10
. A003Y zip 00602 2010 11
Мне бы хотелось, чтобы это выглядело следующим образом, то есть содержимое столбца s_name становится новым столбцом, а их значения - столбцом 'value', сгруппированным по (geo, zip, date):
>>> df2.head()
A002X A002Y A003X A003Y geo zip date
0 1 2 3 4 zip 00601 2010
1 8 9 10 11 zip 00602 2010
2 19 20 21 22 zip 00603 2010
3 31 32 33 45 zip 00604 2010
Я пробовал пару таких вот
>>> df.pivot(columns='s_name', values=["geo","zip","date","value"])
>>> df.pivot(columns='s_name', values=["geo","zip","date","value"]).unstack().reset_index()
Я чувствую, что я действительно близко, но, похоже, ничего не подходит.Это, например, отбрасывает дополнительные значения не-s_name:
>>> df.pivot(columns='name', values=["value"]).head()
Как получить формат, который я ищу?