如何删除后续行中具有重复值的行

时间:2013-04-08 13:52:20

标签: pandas

在我的csv数据中,我有一个包含以下数据的列:

110.00
111.00
111.00 *
112.00
113.00
114.00
114.00 *
115.00
115.00 *
116.00
110.00
111.00
111.00 *
112.00
113.00
114.00
114.00 *
115.00
115.00 *
116.00

我在数据框中读取它并且我想删除具有重复数字的行,但仅限于它们是一个接一个的立即。我用*标记了我要删除的行。 感谢您的任何建议

1 个答案:

答案 0 :(得分:2)

我认为你可以使用.shift()执行此操作,这可以向前或向后移动一系列(默认为一个前进。)如果行与下一行不同,你想保留行,所以像:

 df[df["A"] != df["A"].shift()]

例如:

>>> df = pd.DataFrame({"A": [1,2,1,2,2,3,3,3,1,2]})
>>> df["A"]
0    1
1    2
2    1
3    2
4    2
5    3
6    3
7    3
8    1
9    2
Name: A, dtype: int64
>>> df["A"].shift()
0   NaN
1     1
2     2
3     1
4     2
5     2
6     3
7     3
8     3
9     1
Name: A, dtype: float64
>>> df["A"] != df["A"].shift()
0     True
1     True
2     True
3     True
4    False
5     True
6    False
7    False
8     True
9     True
Name: A, dtype: bool

导致:

>>> df[df["A"] != df["A"].shift()]
   A
0  1
1  2
2  1
3  2
5  3
8  1
9  2