我有一张看起来像这样的桌子:
CLI_CD | CURA_T1 |
---|---|
3 | 0 |
3 | 0 |
3 | 0 |
3 | 0 |
3 | 1 |
3 | 1 |
3 | 1 |
3 | 1 |
3 | 1 |
3 | 1 |
3 | 0 |
3 | 0 |
我需要做的是添加一个名为“CURA_ALT”的列,该列需要识别“CURA_T1”列中第一次出现的数字1,并且基于第一次出现,我需要填充“CURA_ALT”列除以 100/6。但在每一行中,我需要将除法与同一列中前一个单元格的结果相加。
此外,还有不同的 ID (CLI_CD),因此我需要按“CLI_CD”列进行分组才能获得结果。
我期望的是一个如下所示的 DataFrame:
CLI_CD | CURA_T1 | CURA_ALT |
---|---|---|
3 | 0 | 0 |
3 | 0 | 0 |
3 | 0 | 0 |
3 | 0 | 0 |
3 | 1 | 17 |
3 | 1 | 33 |
3 | 1 | 50 |
3 | 1 | 67 |
3 | 1 | 83 |
3 | 1 | 100 |
3 | 0 | 0 |
3 | 0 | 0 |
代码
df['CURA_ALT'] = df.groupby('CLI_CD')['CURA_T1'].cumsum().where(df['CURA_T1'].eq(1), 0).mul(100).div(6).astype('int')
df:
CLI_CD CURA_T1 CURA_ALT
0 3 0 0
1 3 0 0
2 3 0 0
3 3 0 0
4 3 1 16
5 3 1 33
6 3 1 50
7 3 1 66
8 3 1 83
9 3 1 100
10 3 0 0
11 3 0 0