GroupBy With Sub-ranges In Pandas
I am researching soccer dataset LEAGUE HOME DRAW AWAY WINNER PREDICTED PROFIT 0 2 3.25 3.25 2.10 0 2 -10.0 1 14 1.50 3.
Solution 1:
Maybe you need cut
:
bins = np.linspace(0, 5, 20, endpoint=False)
print bins
[ 0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. 2.25 2.5 2.75
3. 3.25 3.5 3.75 4. 4.25 4.5 4.75]
print df.groupby([df.LEAGUE, pd.cut(df.HOME, bins)]).sum()
HOME DRAW AWAY WINNER PREDICTED PROFIT
LEAGUE HOME
2 (0, 0.25] NaN NaN NaN NaN NaN NaN
(0.25, 0.5] NaN NaN NaN NaN NaN NaN
(0.5, 0.75] NaN NaN NaN NaN NaN NaN
(0.75, 1] NaN NaN NaN NaN NaN NaN
(1, 1.25] NaN NaN NaN NaN NaN NaN
(1.25, 1.5] NaN NaN NaN NaN NaN NaN
(1.5, 1.75] NaN NaN NaN NaN NaN NaN
(1.75, 2] NaN NaN NaN NaN NaN NaN
(2, 2.25] 2.25 3.30 3.20 2 0 -10.0
(2.25, 2.5] NaN NaN NaN NaN NaN NaN
(2.5, 2.75] NaN NaN NaN NaN NaN NaN
(2.75, 3] NaN NaN NaN NaN NaN NaN
(3, 3.25] 3.25 3.25 2.10 0 2 -10.0
(3.25, 3.5] NaN NaN NaN NaN NaN NaN
(3.5, 3.75] NaN NaN NaN NaN NaN NaN
(3.75, 4] NaN NaN NaN NaN NaN NaN
(4, 4.25] NaN NaN NaN NaN NaN NaN
(4.25, 4.5] NaN NaN NaN NaN NaN NaN
(4.5, 4.75] NaN NaN NaN NaN NaN NaN
11 (0, 0.25] NaN NaN NaN NaN NaN NaN
(0.25, 0.5] NaN NaN NaN NaN NaN NaN
(0.5, 0.75] NaN NaN NaN NaN NaN NaN
(0.75, 1] NaN NaN NaN NaN NaN NaN
(1, 1.25] NaN NaN NaN NaN NaN NaN
(1.25, 1.5] NaN NaN NaN NaN NaN NaN
(1.5, 1.75] NaN NaN NaN NaN NaN NaN
(1.75, 2] NaN NaN NaN NaN NaN NaN
(2, 2.25] 2.25 3.00 2.88 0 0 12.5
(2.25, 2.5] NaN NaN NaN NaN NaN NaN
(2.5, 2.75] NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ...
14 (2, 2.25] NaN NaN NaN NaN NaN NaN
(2.25, 2.5] NaN NaN NaN NaN NaN NaN
(2.5, 2.75] NaN NaN NaN NaN NaN NaN
(2.75, 3] NaN NaN NaN NaN NaN NaN
(3, 3.25] NaN NaN NaN NaN NaN NaN
(3.25, 3.5] NaN NaN NaN NaN NaN NaN
(3.5, 3.75] NaN NaN NaN NaN NaN NaN
(3.75, 4] NaN NaN NaN NaN NaN NaN
(4, 4.25] NaN NaN NaN NaN NaN NaN
(4.25, 4.5] NaN NaN NaN NaN NaN NaN
(4.5, 4.75] NaN NaN NaN NaN NaN NaN
17 (0, 0.25] NaN NaN NaN NaN NaN NaN
(0.25, 0.5] NaN NaN NaN NaN NaN NaN
(0.5, 0.75] NaN NaN NaN NaN NaN NaN
(0.75, 1] NaN NaN NaN NaN NaN NaN
(1, 1.25] NaN NaN NaN NaN NaN NaN
(1.25, 1.5] NaN NaN NaN NaN NaN NaN
(1.5, 1.75] NaN NaN NaN NaN NaN NaN
(1.75, 2] NaN NaN NaN NaN NaN NaN
(2, 2.25] NaN NaN NaN NaN NaN NaN
(2.25, 2.5] NaN NaN NaN NaN NaN NaN
(2.5, 2.75] NaN NaN NaN NaN NaN NaN
(2.75, 3] NaN NaN NaN NaN NaN NaN
(3, 3.25] NaN NaN NaN NaN NaN NaN
(3.25, 3.5] NaN NaN NaN NaN NaN NaN
(3.5, 3.75] NaN NaN NaN NaN NaN NaN
(3.75, 4] NaN NaN NaN NaN NaN NaN
(4, 4.25] NaN NaN NaN NaN NaN NaN
(4.25, 4.5] NaN NaN NaN NaN NaN NaN
(4.5, 4.75] NaN NaN NaN NaN NaN NaN
[76 rows x 6 columns]
EDIT:
You can use agg
:
print df.groupby([df.LEAGUE, pd.cut(df.HOME, bins)]).agg({'HOME' : min,
'DRAW' : min,
'AWAY' : min,
'WINNER' : 'count',
'PREDICTED' : 'count',
'PROFIT': sum})
DRAW PROFIT AWAY WINNER PREDICTED HOME
LEAGUE HOME
2 (2, 2.25] 3.30 -10.0 3.20 1 1 2.25
(3, 3.25] 3.25 -10.0 2.10 1 1 3.25
11 (2, 2.25] 3.00 12.5 2.88 1 1 2.25
14 (1.25, 1.5] 3.50 5.0 6.00 1 1 1.50
Post a Comment for "GroupBy With Sub-ranges In Pandas"