gpt4 book ai didi

python - Pandas 中带有子范围的 GroupBy

转载 作者:行者123 更新时间:2023-11-30 09:01:13 24 4
gpt4 key购买 nike

我正在研究足球数据集

   LEAGUE   HOME    DRAW    AWAY    WINNER  PREDICTED   PROFIT
0 2 3.25 3.25 2.10 0 2 -10.0
1 14 1.50 3.50 6.00 0 0 5.0
2 2 2.25 3.30 3.20 2 0 -10.0
3 11 2.25 3.00 2.88 0 0 12.5
4 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    PROFIT
0 2 1.25-1.5 10.0
1 2 1.50-1.75 5.0
2 3 NaN NaN
3 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  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]

编辑:

您可以使用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

关于python - Pandas 中带有子范围的 GroupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34610563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com