python-3.x - 如何根据多列上的 OR 条件合并两个数据框?
问题描述
从这个问题详细说明,我正在尝试匹配两个 Pandas 数据框。
匹配条件为:
(left_df.column_to_match == right_df.first_column) | (left_df.column_to_match == right_df.second_column )
或者,换句话说,左侧数据框中要匹配的列应该等于右侧数据框中的第一列或第二列 - 因此是 OR 条件。
我可以使用pd.merge
和输入列表等解决方法
left_df.merge(right_df, left_on=['to_match', 'to_match'], right_on=['first_column', 'second_column'])
但这反过来又只在两列匹配时给我 AND 条件结果。也就是说,中的两列right_df
具有相同的值。
这是输入数据的示例
// left df // right df
To Match First Second
0 TCNU4843483 0 ASDREF TCNU4843483
1 MA18219 1 MA18219 Null
2 MA81192 2 Null Null
3 MFREIGHT 3 HROB789 NESU6748392
这是预期的输出
To Match First Second
0 TCNU4843483 ASDREF TCNU4843483
1 MA18219 MA18219 Null
2 MA81192 Null Null
3 MFREIGHT Null Null
4 Null HROB789 NESU6748392
关于 Pandas 是否支持这个,或者我必须编写自己的函数的任何想法?
解决方案
推荐阅读
- javascript - 为什么 console.time() 显示的获取时间与 DevTools 网络选项卡不同?
- javascript - JS Jquery重复一个功能并切换
- python - 为什么我在“bootstrap4”处收到 TemplateSyntaxError 不是已注册的标签库?
- flutter - 如何将平台添加到现有的 Flutter 应用程序/项目?
- dataframe - 在 Julia DataFrames 中拆分字符串会出错
- google-apps-script - 新编辑器:如何保存版本
- php - 分享以查看页面标题
- python - 有没有办法将列转换为 30 分钟间隔的时间序列对象?
- node.js - Electron js - Spawn 子进程正在一台 Windows 机器上运行,但不在另一台机器上运行
- java - 带有 Hibernate 3.2.6/JPA 的 c3p0 连接池库 - 无法打开连接