加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

累积条件计数

发布时间:2020-12-17 17:37:11 所属栏目:Python 来源:网络整理
导读:我有以下数据框. df = pd.DataFrame( { "drive": [1,1,2,3,4,5,6,7,7],"team": ['home','home','away','home'],"home_comfy_lead": [0,1],"home_drives": [1,4],'home_drives_with_comfy_lead': [0,3] }) 我正在尝试制作两列: home_drives列,该列唯一地计算

我有以下数据框.

df = pd.DataFrame(
    {
        "drive": [1,1,2,3,4,5,6,7,7],"team": ['home','home','away','home'],"home_comfy_lead": [0,1],"home_drives": [1,4],'home_drives_with_comfy_lead': [0,3]
    })

我正在尝试制作两列:

> home_drives列,该列唯一地计算来自
车队依据车队的“主场”称号
柱.
>一个home_drives_with_comfy_lead列,该列唯一地计算
home_drives根据home_comfy_lead是否为true来驱动值.

我想要的输出是:

    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

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

最佳答案
使用.where屏蔽,然后使用groupby ngroup.在这里,我们很幸运为NaN组分配了-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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读