我有
df = pd.DataFrame([{'a':1,'b':1,'c':'x'},{'a':1,'b':1,'c':'x'}, {'a':2,'b':2, 'c':'x'}, {'a':1,'b':2,'c':'x'}, {'a':1,'b':1,'c':'x'}]) a b c 0 1 1 x 1 1 1 x 2 2 2 x 3 1 2 x 4 1 1 x
我只想删除连续重复的行,即仅删除索引 1 处的行
a b c 0 1 1 x 2 2 2 x 3 1 2 x 4 1 1 x
我正要用下面的代码来做这件事,如果 c 列不是 str
df[df[['c']].diff().ne(0).any(1)]
但是,由于 c 列是 str,因此 diff() 不起作用。实现此目的的最佳方法是什么?
.diff()如果不起作用,只需将原始行与前移行进行比较。可以通过调用.all(axis=1)元素比较的结果来找到相同的行。
.diff()
.all(axis=1)
解决方案:
df[~(df.shift() == df).all(axis=1)]
输出: