Pandas 在公共列的并集上水平合并数据帧

问题描述 投票:0回答:1

我有两个数据框,其结构类似于以下内容:

df1

id  name  val
1   a     23
2   b     90
4   c     72


df2

id  name  val
1   d     88
3   e     12
4   f     11

我希望它们合并,以便生成的数据框如下所示:

              df1            df2
          name    val    name    val
idx  1    a       23     d       88
     2    b       90     na      na
     3    na      na     e       12
     4    c       72     f       11

如何在 pandas 中实现这一目标?

python pandas merge
1个回答
0
投票
import pandas as pd
df1 = pd.DataFrame({"id":[1,2,3], "name":["a","b","c"], "val":[23,90,72]})
df2 = pd.DataFrame({"id":[1,3,4], "name":["d","e","f"], "val":[88,12,11]})

df3 = pd.concat([df1.set_index("id"), df2.set_index("id")], axis=1)

   name   val name   val
id                      
1     a  23.0    d  88.0
2     b  90.0  NaN   NaN
3     c  72.0    e  12.0
4   NaN   NaN    f  11.0
© www.soinside.com 2019 - 2024. All rights reserved.