Pandas中使用3个列作为键合并两个DataFrame的方法咨询
完全可以使用3个列作为合并键执行外连接,pandas的merge方法原生支持传入列表形式的多列合并键,没有列数限制,只要两个DataFrame都包含对应合并列即可。
具体实现代码
首先模拟你提供的两个DataFrame:
import pandas as pd # 第一个DataFrame df1 = pd.DataFrame([ [1, 1, 'Test', 'Test', '01/01/2021'], [2, 2, 'Test1', 'Test', '01/01/2021'] ], columns=['PATH', 'CUID', 'NAME', 'Author', 'Updated']) # 第二个DataFrame df2 = pd.DataFrame([ [1, 1, 'Test', 'Test 2', '01/02/2021'], [3, 3, 'Test2', 'Test 2', '01/02/2021'] ], columns=['PATH', 'CUID', 'NAME', 'Author', 'Updated'])
核心合并逻辑:
merged_df = pd.merge( left=df1, right=df2, on=['PATH', 'CUID', 'NAME'], # 指定三个列作为合并键 how='outer' # 外连接保留两个表的所有行 )
执行后得到的merged_df和你给出的预期输出完全一致,未匹配行的非键列会自动置空,默认会给两个表的同名字段加上_x、_y后缀区分来源,也可以通过suffixes参数自定义后缀,比如suffixes=['_表1', '_表2']。
如果两个表的合并键列名不一致,可以用left_on和right_on分别指定左右表对应的合并键列即可。
内容的提问来源于stack exchange,提问作者Wall Elicot
相关产品推荐
相关产品推荐

