累积条件计数

时间:2019-02-08 21:03:53

标签: python pandas numpy pandas-groupby data-science

我有以下数据框。

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]
    })

我正在尝试创建两列:

  1. 一个home_drives列,用于唯一地计算驱动器中的驱动器 drive列基于team中的“住所”名称 列。

  2. 一个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

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

1 个答案:

答案 0 :(得分:2)

使用if(pinVerif && pin.length==4) 进行遮罩,然后使用.where + groupby。在这里,我们很幸运地为ngroup组分配了-1,并且您还想从1开始计数,因此同时添加了两个+1修复程序。

NaN

输出:

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