“信号”列中填充了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)
输出
signal reversal
0 0 1
1 0 0
2 0 0
3 1 1
4 1 0
5 0 1
答案 0 :(得分:0)
如果您正在寻找更改,我建议使用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