pandas 将2列相乘,直到得到所需值

chhkpiq4  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(109)

向大家打招呼,
我有这个表(没有Res_Problem):
| 识别码|问题|X轴|冲击力|概率|解决问题|
| - -|- -|- -|- -|- -|- -|
| 识别码1|十二|IDC 1型|一个|2个|(12-2)=10个|
| 识别码1|十二|IDC 2型|2个|2个|(10-4)=6停止|
| 识别码1|十二|IDC 3型|一个|第0页|无循环|
| 识别码1|十二|IDC 4接口|一个|第0页|无循环|
| 识别码2| 10个|IDB 1接口|一个|2个|新循环(10-2)=8|
| 识别码2| 10个|IDB 1接口|一个|2个|(8-2)= 6停止|
我想做一个循环,将影响和概率相乘,直到获得所需的值(例如6),并停止循环,直到它达到6。但在ID 2上再次开始循环...等等,有什么建议吗?
我想应该是这样的:
当(df [“问题”] - df [“影响”]*df [“影响”]〈6):df ['循环'] = res
循环应创建“Res_Problem”列

ocebsuys

ocebsuys1#

以下是一个选项:

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)

输出:

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

相关问题