python - 在两个数据帧中查找重复项并从一个数据帧中删除重复项
问题描述
使用 Python / pandas / 数据框
我有这两个数据框:
数据框一:
1 2 3
1 Stockholm 100 250
2 Stockholm 150 376
3 Stockholm 105 235
4 Stockholm 109 104
5 Burnley 145 234
6 Burnley 100 250
数据框二:
1 2 3
1 Stockholm 100 250
2 Stockholm 117 128
3 Stockholm 105 235
4 Stockholm 100 250
5 Burnley 145 234
6 Burnley 100 953
我想找到在数据框一和数据框二中找到的重复行,并从数据框一中删除重复的行。与数据框 2 一样,您可以在数据框 1 中找到第 1、3、5 行,这会将它们从数据框中删除并创建以下内容:
1 2 3
1 Stockholm 150 376
2 Stockholm 109 104
3 Burnley 100 250
解决方案
利用:
df_merge = pd.merge(df1, df2, on=[1,2,3], how='inner')
df1 = df1.append(df_merge)
df1['Duplicated'] = df1.duplicated(keep=False) # keep=False marks the duplicated row with a True
df_final = df1[~df1['Duplicated']] # selects only rows which are not duplicated.
del df_final['Duplicated'] # delete the indicator column
思路如下:
- 对所有列进行内部连接
- 将内部连接的输出附加到 df1
- 识别 df1 中的重复行
- 选择 df1 中不重复的行
每个数字对应于每一行代码。
推荐阅读
- c - 我收到错误“未指定与字符串文字的比较结果(改用 strncmp)”
- python - 如何处理此类列表输入?
- javascript - 向 Riot API 发送 ajax 请求时遇到问题
- flutter - 如何在应用启动时初始化变量?
- sql - sql关系表
- javascript - 为什么 d3 在我的 React 应用程序的 Chrome 控制台中未定义?
- c# - 如何在引用 .Net 标准库项目的 Xamarin Android 应用程序中进行调试和错误处理
- c# - .NET-Core 3 MVC 控制器 Url.Action 返回 null
- python - 是否可以优化此 Python 代码?
- c# - 从另一个 cls.cs 文件调用转换后的输入