看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在下列数据集中,有左 A 和右 B 两列,有些行有两个相同的数字,但左右顺序不一样,如索引 0 和 3,0 和 5,1 和 4,现在需要将这些相同的数据整行删除。(问题来自知乎)
import pandas as pd
df = pd.DataFrame({'A':[25, 40, 50, 26, 65, 25],
'B':[26, 65, 100, 25, 40, 26]}
)
df
'''
A B
0 25 26
1 40 65
2 50 100
3 26 25
4 65 40
5 25 26
'''
建立辅助列 C,将 AB 两列的数字组成一个元组赋值给这列,组合的过程中进行排序,这样即使位置不同的两个数字,排序后会相同。然后再用 drop_duplicates
按 C 列执行删除。
(
df.assign(C=df.apply(lambda x: tuple(sorted(x)), axis=1))
.drop_duplicates('C')
)
'''
A B C
0 25 26 (25, 26)
1 40 65 (40, 65)
2 50 100 (50, 100)
'''
(完)
更新时间:2024-08-18 16:02:57 标签:pandas python 重复值