列'信号'填充0或1,我希望列'反转告诉我此列何时发生变化(即从0到1或1到0)。
import pandas as pd
import numpy as np
d= {'signal':[0,0,0,1,1,0]}
df_zinc = pd.DataFrame(data=d)
df_zinc['reversal'] = np.where(df_zinc['signal']!=df_zinc['signal'].shift(),1,0)
print(df_zinc)
OUTPUT
signal reversal
0 0 1
1 0 0
2 0 0
3 1 1
4 1 0
5 0 1
如果您正在寻找更改,我建议使用diff代替:
df_zinc['signal'].diff().fillna(0)!=0
如果你喜欢它作为int而不是布尔值:
bool_s = df_zinc['signal'].diff().fillna(0)!=0
int_s = bool_s.astype(int)
测试:
df_zinc['reversal'] = (df_zinc['signal'].diff().fillna(0)!=0).astype(int)
产量
signal reversal
0 0 0
1 0 0
2 0 0
3 1 1
4 1 0
5 0 1