python - 在python中删除另一个数据框中具有公共列值的数据框中的行
问题描述
这是数据框 1:
Date name Age
0 2015-01-02 Adam 1
1 2015-02-02 David 2
2 2015-02-02 Mila 2
3 2015-03-02 Harshan 2
4 2015-03-02 Hardik 2
5 2015-03-02 Alex 3
这是数据框 2:
Date name Age
0 2015-01-02 Jadeja 1
1 2015-02-02 Dravid 2
2 2015-02-02 Dhoni 2
3 2015-03-02 Hrithik 2
4 2015-03-02 Hardik 2
5 2015-03-02 Alex 3
现在我想删除数据框 1 中的行,其中两个数据框的名称列中有共同值
这是预期的输出:
Date name Age
0 2015-01-02 Adam 1
1 2015-02-02 David 2
2 2015-02-02 Mila 2
3 2015-03-02 Harshan 2
解决方案
您可以merge
使用indicator=True
来指示值的来源并仅保留第一个数据帧中的值(“left_only”):
(df1.merge(df2, how='outer', indicator=True)
.query('_merge == "left_only"')
.drop('_merge', axis=1)
)
注意。如果您需要限制用于匹配的列,请使用以下on
选项merge
:例如on=['Date', 'name']
输出:
Date name Age
0 2015-01-02 Adam 1
1 2015-02-02 David 2
2 2015-02-02 Mila 2
3 2015-03-02 Harshan 2
管道第一步之后的中间数据:
Date name Age _merge
0 2015-01-02 Adam 1 left_only
1 2015-02-02 David 2 left_only
2 2015-02-02 Mila 2 left_only
3 2015-03-02 Harshan 2 left_only
4 2015-03-02 Hardik 2 both
5 2015-03-02 Alex 3 both
6 2015-01-02 Jadeja 1 right_only
7 2015-02-02 Dravid 2 right_only
8 2015-02-02 Dhoni 2 right_only
9 2015-03-02 Hrithik 2 right_only
推荐阅读
- jenkins - jenkins-operator 种子作业顺序
- react-native - 导航到同一堆栈中的页面不刷新页面 - react-navigation
- android-management-api - Android Management API / Kiosk 模式:如何调试?
- google-sheets - How to create a line chart based on triplets with the same z and different x and y
- bash - 带有后台进程的 linux (bash) 屏幕
- android - How to best clear an Android ViewModel when the app is killed?
- office365 - 如何在onedrive rest api中搜索所有文件
- jdbc - 无法执行 Preparedstatement 批处理 JDBC 语句
- xml - NuGet package differences depending on build method
- api - 获取 Maven 依赖项的依赖树的 API