用条件对列进行分组和相乘



我试图乘2列,直到得到所需的值(8),但我需要先分组,也需要保持第一个多,如果值已经低于所需的值(这部分是有问题的)

Nuevo_P33333

您可以使用groupby.apply:

# compute the product
s = df[['Nuevo_I', 'Nuevo_P']].prod(axis=1)
# identify values after the first value < 8
m = (s.le(8).groupby([df['MPRO'], df['ID']], group_keys=False)
.apply(lambda x: x.shift(fill_value=False).cummax())
)
# mask
df['F'] = s.mask(m, 'DONE')

输出:

MPRO   ID  Nuevo_I  Nuevo_P     F
0     1  ID1        5        3    15
1     1  ID1        2        3     6
2     1  ID1        1        3  DONE
3     1  ID2        2        3     6
4     1  ID2        1        3  DONE
5     1  ID3        3        2     6
6     2  ID1        3        4    12
7     2  ID2        3        2     6
8     2  ID2        3        1  DONE
9     2  ID3        2        1     2

相关内容

  • 没有找到相关文章

最新更新