小能豆

从具有多列和字符串 [duplicate] 的 DataFrame 中删除连续重复项

py

我有

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() 不起作用。实现此目的的最佳方法是什么?


阅读 25

收藏
2024-12-26

共1个答案

小能豆

.diff()如果不起作用,只需将原始行与前移行进行比较。可以通过调用.all(axis=1)元素比较的结果来找到相同的行。

解决方案:

df[~(df.shift() == df).all(axis=1)]

输出:

   a  b  c
0  1  1  x
2  2  2  x
3  1  2  x
4  1  1  x
2024-12-26