我正在研究足球数据集
LEAGUE HOME DRAW AWAY WINNER PREDICTED PROFIT0 2 3.25 3.25 2.10 0 2 -10.01 14 1.50 3.50 6.00 0 0 5.02 2 2.25 3.30 3.20 2 0 -10.03 11 2.25 3.00 2.88 0 0 12.54 17 5.00 3.75 1.70 2 2 7.0
现在,我正在寻找一种方法 GroupBy(League, 1.25 < Home < 1.5 | 1.5 < Home < 1.75 ..)
以获得如下的目标数据集示例:
LEAGUE HOME PROFIT0 2 1.25-1.5 10.01 2 1.50-1.75 5.02 3 NaN NaN3 3 1.5-1.75 12.5...
回答:
你可能需要使用 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 PROFITLEAGUE 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 NaN11 (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 NaN17 (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]
编辑:
你可以使用 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 HOMELEAGUE 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.2511 (2, 2.25] 3.00 12.5 2.88 1 1 2.2514 (1.25, 1.5] 3.50 5.0 6.00 1 1 1.50