如何让pandas merge()在键重复时不生成笛卡尔积并实现指定合并?
实现指定结构的DataFrame合并
因为两个DataFrame的b列值完全重复,直接按b列merge会触发笛卡尔积。要实现行对应合并,需要添加辅助索引列来提供唯一匹配键,具体步骤如下:
为两个DataFrame添加临时索引列
import pandas as pd a = pd.DataFrame({"a": [1,2], "b": [1,1]}).reset_index(drop=False, names='idx') b = pd.DataFrame({"c": [3,4], "b": [1,1]}).reset_index(drop=False, names='idx')同时按临时索引列和
b列执行merge,之后删除临时列c = a.merge(b, on=['idx', 'b'], how='inner').drop('idx', axis=1)
执行后得到的c结构如下:
a b c 0 1 1 3 1 2 1 4
完全符合你需要的{'a':[1,2], 'c':[3,4], 'b':[1,1]}格式。
内容的提问来源于stack exchange,提问作者pees Slur
相关产品推荐
相关产品推荐

