我的数据框为
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]})
答案 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)
您只需保留A
和C
对的第二次重复:
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