为了账号安全,请及时绑定邮箱和手机立即绑定

累积条件计数

累积条件计数

呼唤远方 2021-11-02 20:15:33
我有以下数据框。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_lead0       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有人能帮忙吗?我已经为此苦苦挣扎了几天。
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

使用.where遮罩,然后groupby+ ngroup。在这里,我们很幸运,NaN组被分配了 -1,并且您还想从 1 开始计数,因此添加 +1 可以同时修复这两个问题。


df['home_drives'] = df.where(df.team == 'home').groupby('drive').ngroup()+1

df['hdwcl'] = df.where(df.home_comfy_lead == 1).groupby('home_drives').ngroup()+1

输出:

    drive  team  home_comfy_lead  home_drives  hdwcl

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


查看完整回答
反对 回复 2021-11-02
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号