Python 将列从一个数据帧添加到另一个数据帧,以显示重叠列中的值

Python 将列从一个数据帧添加到另一个数据帧,以显示重叠列中的值,python,pandas,Python,Pandas,下面是我正在尝试做的一个例子: In [46]: import pandas as pd In [47]: df_3 = pd.DataFrame(np.arange(12).reshape(6,2), columns=["a", "z"]) In [48]: df = pd.DataFrame(np.arange(12).reshape(4,3), columns=["a", "b", "c"]) In [49]: df Out[49]: a b c 0 0 1

下面是我正在尝试做的一个例子:

In [46]: import pandas as pd

In [47]: df_3 = pd.DataFrame(np.arange(12).reshape(6,2), columns=["a", "z"])


In [48]: df = pd.DataFrame(np.arange(12).reshape(4,3), columns=["a", "b", "c"])

In [49]: df
Out[49]: 
   a   b   c
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11

[4 rows x 3 columns]

In [50]: df_3
Out[50]: 
    a   z
0   0   1  # present in df 
1   2   3
2   4   5
3   6   7  # present in df
4   8   9
5  10  11

[6 rows x 2 columns]
我想将z列添加到
df
,但我只想为列
a
上匹配的行添加值。如果不是,我想要一个空值

我期望的输出如下所示:

In [52]: df["z"] = [1, np.nan, 7, np.nan]

In [53]: df
Out[53]: 
   a   b   c   z
0  0   1   2   1
1  3   4   5 NaN
2  6   7   8   7
3  9  10  11 NaN

[4 rows x 4 columns]
我尝试过天真的尝试,比如

In [57]: df.merge(df_3, on=["a"])
Out[57]: 
   a  b  c  z
0  0  1  2  1
1  6  7  8  7

[2 rows x 4 columns]
这并没有给出我想要的结果。

只需在“a”列上执行一个,然后执行左类型合并:

In [72]:

df.merge(df_3, on='a', how='left')
Out[72]:
   a   b   c   z
0  0   1   2   1
1  3   4   5 NaN
2  6   7   8   7
3  9  10  11 NaN
您获得此结果的原因:

In [57]: df.merge(df_3, on=["a"])
Out[57]: 
   a  b  c  z
0  0  1  2  1
1  6  7  8  7

[2 rows x 4 columns]
是因为默认合并类型为“内部”,因此值必须同时存在于lhs和rhs中,请参阅文档: