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

标签 python pandas dataframe numpy while-loop

向大家问好,

我有这个表(没有 Res_Problem):

<表类=“s-表”> <标题> ID 问题 X 影响 问题 Res_Problem <正文> ID1 12 IDC1 1 2 (12-2)=10 ID1 12 IDC2 2 2 (10-4)=6 停止 ID1 12 IDC3 1 0 无循环 ID1 12 IDC4 1 0 无循环 ID2 10 IDB1 1 2 新循环 (10-2)=8 ID2 10 IDB1 1 2 (8-2) = 6 停止

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

我认为它必须是这样的:

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

循环应创建“Res_Problem”列

最佳答案

这里有一个选项:

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

关于python - 乘以 2 列,直到获得所需的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74619855/

相关文章:

python - 具有参数限制的 root minuit2 等高线

Python:将str格式转换为可调用方法

python - 如何使用 pytest tmpdir.as_cwd 获取临时路径

Python:Pandas:将文本文件中的数据帧索引保存为列

python - 替换数据框中的值,其中更新版本位于另一个数据框中

python - 如何获取 Pandas 中分组中最大数据的列的值?

python - pytorch Dataset.__getitem__ 是否必须返回字典?

python - Pandas 以绝对最大值重新采样

python - pandas 数据帧行的两两相等

python - 尝试在 jupyter 笔记本中打印数据帧时出现类型错误