累积条件计数

我有以下数据框。


df = pd.DataFrame(

    {

        "drive": [1,1,2,2,2,3,3,3,4,4,4,5,5,6,6,7,7],

        "team": ['home','home','away','away','away','home','home','home','away',

                 'away','away','home','home','away','away','home','home'],

        "home_comfy_lead": [0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,1],

        "home_drives": [1,1,0,0,0,2,2,2,0,0,0,3,3,0,0,4,4],

        'home_drives_with_comfy_lead': [0,0,0,0,0,0,0,1,0,0,0,2,2,0,0,3,3]

    })

我正在尝试制作两列:


一个home_drives列,它根据drive列中的“主页”名称对team 列中的驱动器进行唯一计数 。


一个home_drives_with_comfy_lead唯一计数列 home_drives根据是否值home_comfy_lead是真实的。


我想要的输出是:


    drive  team  home_comfy_lead  home_drives  home_drives_with_comfy_lead

0       1  home                0            1                            0

1       1  home                0            1                            0

2       2  away                0            0                            0

3       2  away                0            0                            0

4       2  away                0            0                            0

5       3  home                0            2                            0

6       3  home                0            2                            0

7       3  home                1            2                            1

8       4  away                0            0                            0

9       4  away                0            0                            0

10      4  away                0            0                            0

11      5  home                1            3                            2

12      5  home                1            3                            2

13      6  away                0            0                            0

14      6  away                0            0                            0

15      7  home                1            4                            3

16      7  home                1            4                            3

有人能帮忙吗?我已经为此苦苦挣扎了几天。



呼唤远方
浏览 158回答 1
1回答

一只名叫tom的猫

使用.where遮罩,然后groupby+ ngroup。在这里,我们很幸运,NaN组被分配了 -1,并且您还想从 1 开始计数,因此添加 +1 可以同时修复这两个问题。df['home_drives'] = df.where(df.team == 'home').groupby('drive').ngroup()+1df['hdwcl'] = df.where(df.home_comfy_lead == 1).groupby('home_drives').ngroup()+1输出:    drive  team  home_comfy_lead  home_drives  hdwcl0       1  home                0            1      01       1  home                0            1      02       2  away                0            0      03       2  away                0            0      04       2  away                0            0      05       3  home                0            2      06       3  home                0            2      07       3  home                1            2      18       4  away                0            0      09       4  away                0            0      010      4  away                0            0      011      5  home                1            3      212      5  home                1            3      213      6  away                0            0      014      6  away                0            0      015      7  home                1            4      316      7  home                1            4      3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python