基于最优可用组合合并两个Pandas DataFrame(忽略空值)
问题描述
现有两个包含key1、key2关键字段的DataFrame(df1和df2),需忽略空值,基于最优匹配组合将二者合并得到目标DataFrame df3。
输入1(df1)
key1 key2 val1 0 A E 1 1 B F 2 2 C G 3 3 D H 4
输入2(df2)
key1 key2 val2 0 A E 5 1 B F 6 2 NaN G 7 3 D NaN 8 4 A NaN 9
预期输出(df3)
key1 key2 val1 val2 0 A E 1 5 1 B F 2 6 2 NaN G 3 7 3 D NaN 4 8
匹配规则说明
- 行0和行1:df1与df2的
key1和key2均匹配,直接合并; - 行2:
key1不匹配但key2匹配,仅基于key2合并; - 行3:
key1匹配但key2不匹配,仅基于key1合并。
示例代码
import numpy as np import pandas as pd df1 = pd.DataFrame({ 'key1':['A', 'B', 'C', 'D'], 'key2':['E', 'F', 'G', 'H'], 'val1':[1, 2, 3, 4]}) df2 = pd.DataFrame({ 'key1':['A', 'B', np.NaN, 'D', 'A'], 'key2':['E', 'F', 'G', np.NaN, np.NaN], 'val2':[5, 6, 7, 8, 9]}) df3 = pd.DataFrame({ 'key1':['A', 'B', np.NaN, 'D'], 'key2':['E', 'F', 'G', np.NaN], 'val1':[1, 2, 3, 4], 'val2':[5, 6, 7, 8]})
内容的提问来源于Stack Exchange,提问作者l a s
相关产品推荐
相关产品推荐

