熊猫部分删除重复值

时间:2020-04-09 16:30:39

标签: python pandas

我的数据框为

df=pd.DataFrame({'A':[1, 3, 3, 4, 5, 3, 3],
                 'B':[0, 2, 3, 4, 5, 6, 7],
                 'C':[7, 2, 2, 5, 7, 2, 2]})

我想从A和C列中删除重复的值。但是,我希望它能部分工作。

如果我使用

df.drop_duplicates(subset=['A','C'], keep='first')

它将删除第2、5、6行。但是,我只想删除第2和6行。所需的结果如下:

df=pd.DataFrame({'A':[1, 3, 4, 5, 3],
                 'B':[0, 2, 4, 5, 6],
                 'C':[7, 2, 5, 7, 2]})

2 个答案:

答案 0 :(得分:2)

以下是使用shift的方法:

df.loc[(df[["A", "C"]].shift() != df[["A", "C"]]).any(axis=1)].reset_index(drop=True)

输出:

   A  B  C
0  1  0  7
1  3  2  2
2  4  4  5
3  5  5  7
4  3  6  2

This question是很好的参考。

答案 1 :(得分:0)

您只需保留AC对的第二次重复:

df=df.loc[df.groupby(["A", "C"]).cumcount()%2==0]

输出:

   A  B  C
0  1  0  7
1  3  2  2
3  4  4  5
4  5  5  7
5  3  6  2