在2个熊猫df中查找公共行,并报告具有匹配值和不匹配值的df

时间:2019-11-13 20:22:42

标签: python pandas

我有2个玩具熊猫dfs:

df1 = pd.DataFrame({'x': [1,2,3,4,5,6,7,8,9,10],
                    'y':['a', 'b', 'c', 'd', 'e', 'a', 'z', 'p', 'q', 'r'],
                    'z': [9,8,7,6,5,4,3,2,1,0],
                    'w': [0.3, 0.5, 0.1, np.nan, 0.2, 0.3, np.nan, 1, 0.9, 0.3]}
                     )
df2 = pd.DataFrame({'t1': [1000,1500,3000,],
                    'y':['d', 'e', 'a'],
                    'z':[6,5,4],
                    'w': [np.nan, np.nan, np.nan]}
                     )

我要尝试不使用df.iterrows(非常慢)是基于列[y,z]查找df1(较大df)中的df2(较小df)的元素。 df1和df2具有相同的列数,并且几乎具有相同的列名,因此我要查找df1中与df2有关的y,z列中的匹配项,并报告这些值的匹配值和不匹配值。

在上面的示例中,生成的df应该是这样的: enter image description here

t1和x分别是df1和df2的唯一名称,这就是为什么它们以我在示例中显示的方式显示的原因。两个数据帧都存在z,但是内容改变了,所以这就是解决方案中有一个“ z1”的原因。

0 个答案:

没有答案