Mam dataframe:Pandy groupby(), agg() - jak zwracać wyniki bez indeksu multi?
pe_odds[ [ 'EVENT_ID', 'SELECTION_ID', 'ODDS' ] ]
Out[67]:
EVENT_ID SELECTION_ID ODDS
0 100429300 5297529 18.00
1 100429300 5297529 20.00
2 100429300 5297529 21.00
3 100429300 5297529 22.00
4 100429300 5297529 23.00
5 100429300 5297529 24.00
6 100429300 5297529 25.00
Gdy używam GroupBy i AGG, mam wyniki z multi-index:
pe_odds.groupby([ 'EVENT_ID', 'SELECTION_ID' ])[ 'ODDS' ].agg([ np.min, np.max ])
Out[68]:
amin amax
EVENT_ID SELECTION_ID
100428417 5490293 1.71 1.71
5881623 1.14 1.35
5922296 2.00 2.00
5956692 2.00 2.02
100428419 603721 2.44 2.90
4387436 4.30 6.20
4398859 1.23 1.35
4574687 1.35 1.46
4881396 14.50 19.00
6032606 2.94 4.20
6065580 2.70 5.80
6065582 2.42 3.65
100428421 5911426 2.22 2.52
Próbowałem, używając as_index zwrócić wyników bez multi_index:
pe_odds.groupby([ 'EVENT_ID', 'SELECTION_ID' ], as_index=False)[ 'ODDS' ].agg([ np.min, np.max ], as_index=False)
Ale nadal daje mi multi-indeks.
mogę używać .reset_index(), ale jest bardzo powolny:
pe_odds.groupby([ 'EVENT_ID', 'SELECTION_ID' ])[ 'ODDS' ].agg([ np.min, np.max ]).reset_index()
pe_odds.groupby([ 'EVENT_ID', 'SELECTION_ID' ])[ 'ODDS' ].agg([ np.min, np.max ]).reset_index()
Out[69]:
EVENT_ID SELECTION_ID amin amax
0 100428417 5490293 1.71 1.71
1 100428417 5881623 1.14 1.35
2 100428417 5922296 2.00 2.00
3 100428417 5956692 2.00 2.02
4 100428419 603721 2.44 2.90
5 100428419 4387436 4.30 6.20
Jak mogę powrócić wyników, bez Multi-index, używając parametrów GroupBy i/lub funkcji agg. I bez konieczności uciekania się do używania funkcji reset_index()?