我正在尝试比较pandas dataframe
的同一列中的两个值。
如果两个值不同,我想创建一个新值。
我的代码如下:
def f(x, var1, var2):
if (x[var1].shift(1) != x[var1]):
x[var2] = 1
else:
x[var2] = 0
return x
sdf['2008':'2009'].apply(lambda x: f(x, 'ROW1','ROW2'),axis = 1)
不幸的是,这个没有用。我得到以下错误消息
'numpy.float64'对象没有属性'shift'“,'发生在索引2008-01-01 00:00:00'
感谢您的帮助。
答案 0 :(得分:1)
我认为您需要:
df0 = df.shift()
df['Row2'] = np.where(df0['Row1']!=df['Row1'], 1, 0)
编辑:
如@jpp在评论中所建议:
df['Row2'] = (df0['Row1']!=df['Row1']).astype(int)