我得到了更好的性能,
ne而不是使用实际的
!=比较:
df['changed'] = df['ColumnB'].ne(df['ColumnB'].shift().bfill()).astype(int)
时机
使用以下设置来产生更大的数据框:
df = pd.concat([df]*10**5, ignore_index=True)
我得到以下计时:
%timeit df['ColumnB'].ne(df['ColumnB'].shift().bfill()).astype(int)10 loops, best of 3: 38.1 ms per loop%timeit (df.ColumnB != df.ColumnB.shift()).astype(int)10 loops, best of 3: 77.7 ms per loop%timeit df['ColumnB'] == df['ColumnB'].shift(1).fillna(df['ColumnB'])10 loops, best of 3: 99.6 ms per loop%timeit (df.ColumnB.ne(df.ColumnB.shift())).astype(int)10 loops, best of 3: 19.3 ms per loop



