Вам просто нужен дополнительный шаг, чтобы проверить, равняется ли B
0
:
df['B'] = df.A.diff()
df['C'] = df.B.ne(0).view('i1')
print(df)
A B C
0 10 NaN 1
1 20 10.0 1
2 20 0.0 0
3 50 30.0 1
4 50 0.0 0
5 30 -20.0 1
Не рекомендуется, но так как вы спросили, мы можем сделать его одним вкладышем с eval
:
df['B'], df['C'] = df.assign(B=df.A.diff()).eval('B, B!=0')