根据条件和groupby在pandas数据帧的每一行中填充值

问题描述 投票:0回答:1

我有一张看起来像这样的桌子:

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
python pandas dataframe group-by
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.