首页 > 解决方案 > 如何根据条件计算一行中的值的数量 - pandas

问题描述

我想计算一行中的元素数量并根据前一个元素减去一个值。我可以在 for 循环中做到这一点,但它太慢了。我想在 Target 列中每次出现 0 或 2 时收取 7 美元的费用,但如果之前的 Target 等于当前的目标则不会。Target == 1 的费用为 0 美元,如果出现的新目标不是 1 或当前目标,则费用为 7 美元。我的 df 中有 Target,但我想计算费用。df 上的示例

输入:

df.head(10)

Target   Fee
1         0
1         0
1         0
0        -7
0         0
0         0
2        -7
2         0
1         0
2        -7



标签: pythonpandas

解决方案


国际大学联盟:

df['Fee'] = (df.Target.diff().ne(0) & df.Target.isin([0,2])) * (-7)

输出:

   Target  Fee
0       1    0
1       1    0
2       1    0
3       0   -7
4       0    0
5       0    0
6       2   -7
7       2    0
8       1    0
9       2   -7

推荐阅读