首页 > 解决方案 > 使用熊猫的合并错误

问题描述

df1 = pd.DataFrame(columns=["x","y","z"])
df2 = pd.DataFrame({"x":[1],"y":[2]}, index=["foo"])

我试图得到这个结果:

       z  x  y
foo  NaN  1  2

我试过了

df1.merge(df2,how="outer", on=["x","y"], right_index=True)

这给出了错误

MergeError: Can only pass argument "on" OR "left_index" and "right_index", not a combination of both.

然而,既不

df1.merge(df2,how="outer", on=["x","y"])

也不

df1.merge(df2,how="outer", left_index=True, right_index=True)

给出想要的结果...

标签: pythonpandas

解决方案


以下命令:

    df2.merge(df1, on=['x', 'y'], how='outer')

生产

   x  y    z
0  1  2  NaN

索引不是您需要的,因此您可以这样做:

    df2.reset_index().merge(df1, on=['x', 'y'], how='outer').set_index('index')

生产

       x  y    z
index           
foo    1  2  NaN

如果要删除“索引”一词,请命名上述数据框df3并:

    del df3.index.name

导致

     x  y    z
foo  1  2  NaN

推荐阅读