我有一个看起来像这样的数据框;
index,othercols,FPNts1,otherStuff,val1ts2,otherStuff,val2ts3,otherStuff,val3ts4,otherStuff,val4….
TSN </跨度> ,otherStuff,valn
因为
我想我的逻辑是正确的,我添加了一个新的列'run',它是一个布尔值来表示该值是否与前一行的值相同:
In [438]: df['run'] = (df['val'] == df['val'].shift()) df Out[438]: id val run 0 1 0 False 1 2 0 True 2 3 0 True 3 4 5 False 4 5 0 False 5 6 0 True
然后我过滤掉运行的值 True 而下一行也是 True :
True
In [442]: df[~((df['run']==True) & (df['run'].shift(-1) == True))] Out[442]: id val run 0 1 0 False 2 3 0 True 3 4 5 False 4 5 0 False 5 6 0 True
的 编辑 强>
以下单行也适用于确认OP:
In [447]: df = df[(df['val'].shift()!=df['val'].shift(-1)) | (df['val']!=df['val'].shift(-1))] df Out[447]: id val 0 1 0 2 3 0 3 4 5 4 5 0 5 6 0