ho un dataframe:Pandas groupby(), agg() - come restituire i risultati senza il multiindice?
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
Quando uso groupby e agg, ottengo risultati con un 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
Ho provato con as_index per restituire i risultati sul multi_index:
pe_odds.groupby([ 'EVENT_ID', 'SELECTION_ID' ], as_index=False)[ 'ODDS' ].agg([ np.min, np.max ], as_index=False)
Ma mi dà ancora un multiindice.
posso usare .reset_index(), ma è molto lento:
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
Come posso restituire i risultati, senza il Multi-index, utilizzando i parametri del groupby e/o la funzione agg. E senza dover ricorrere a reset_index()?