我想计算一行中的元素数量,并根据前一个元素减去一个值。我可以在for循环中执行此操作,但是速度太慢。我想在“目标”列中每次出现0或2时都收取$ 7的费用,但如果先前的目标等于当前目标,则不收取。目标= 0的费用为$ 0,如果出现的新目标不是1或当前目标,则费用为$ 7。我的df中有目标,但我想计算费用。 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
答案 0 :(得分:1)
IIUC:
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