乘以 2 列,直到获得所需的值

Sim*_*mon 2 python numpy while-loop dataframe pandas

问候大家,

我有这个表(没有 Res_Problem):

ID 问题 X 影响 概率 解决问题
识别号1 12 数据中心1 1 2 (12-2)=10
识别号1 12 数据中心2 2 2 (10-4)=6 停止
识别号1 12 数据中心3 1 0 无循环
识别号1 12 数据中心4 1 0 无循环
识别号2 10 IDB1 1 2 新循环 (10-2)=8
识别号2 10 IDB1 1 2 (8-2) = 6 停止

我想做一个循环,将影响和概率相乘,直到获得所需值(例如 6),然后停止循环,直到达到 6。但再次开始 ID2 上的循环...等等,任何建议?

我认为它必须是这样的:

while (df['问题'] - df['影响']*df['影响'] < 6): df['循环'] = res

循环应创建“Res_Problem”列

moz*_*way 5

这是一种选择:

s = (df['Problem']
 .sub(df['Impact'].mul(df['Prob'])
      .groupby(df['ID']).cumsum()
      )
)

m = s.le(6).groupby(df['ID']).shift(fill_value=False)

df['Res_Problem'] = s.mask(m)
Run Code Online (Sandbox Code Playgroud)

输出:

    ID  Problem     X  Impact  Prob  Res_Problem
0  ID1       12  IDC1       1     2         10.0
1  ID1       12  IDC2       2     2          6.0
2  ID1       12  IDC3       1     0          NaN
3  ID1       12  IDC4       1     0          NaN
4  ID2       10  IDB1       1     2          8.0
5  ID2       10  IDB1       1     2          6.0
Run Code Online (Sandbox Code Playgroud)