Проблема с использованием Pivot_Table в Python: есть ли способ сохранить исходный порядок данных и не иметь мультииндекс? - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь воссоздать мой фрейм данных. Ниже приведен исходный фрейм данных:

df = pd.DataFrame([['January','Monday',0,1,20],['January','Monday',1,2,15],['January','Wednesday',0,1,35],['March','Monday',0,1,23],['March','Monday',1,2,50],['March','Monday',2,3,60] ,['April','Wednesday',0,1,75]],columns = ['Month','Day','Data1','Data2','Random'])

     Month        Day  Data1  Data2  Random
0  January     Monday      0      1      20
1  January     Monday      1      2      15
2  January  Wednesday      0      1      35
3    March     Monday      0      1      23
4    March     Monday      1      2      50
5    March     Monday      2      3      60
6    April  Wednesday      0      1      75

Я стремлюсь получить следующий результат:

     Month        Day  0    1    2
0  January     Monday  1  2.0  NaN
1  January     Monday  1  2.0  NaN
2  January  Wednesday  1  NaN  NaN
3    March     Monday  1  2.0  3.0

Я пытался использовать сводную таблицу, как показано ниже, но, конечно, она не работала, так какpivot_table не допускает дублирования индекса, и у меня также будет мультииндекс, который вызывает проблемы в моем последующем процессе.

df1 = pd.pivot_table(df, values = 'Data2', index = ['Month','Day'], columns = ['Data1'])

Data1                0    1    2
Month   Day                     
April   Wednesday  1.0  NaN  NaN
January Monday     1.0  2.0  NaN
        Wednesday  1.0  NaN  NaN
March   Monday     1.0  2.0  3.0

Есть ли другой способ получить мой целевой результат? Большое спасибо заранее.

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете попробовать использовать groupby с unstack:

df.groupby(['Month','Day','Data2'])['Data2'].first().unstack().reset_index()

Вывод:

Data2    Month        Day    1    2    3
0        April  Wednesday  1.0  NaN  NaN
1      January     Monday  1.0  2.0  NaN
2      January  Wednesday  1.0  NaN  NaN
3        March     Monday  1.0  2.0  3.0
...