Python 从另一个数据帧填充数据帧的列

Python 从另一个数据帧填充数据帧的列,python,pandas,dataframe,Python,Pandas,Dataframe,我试图根据条件从另一个数据帧填充数据帧的一列。假设我的第一个数据帧是df1,第二个名为df2 # df1 is described as bellow : +------+------+ | Col1 | Col2 | +------+------+ | A | 1 | | B | 2 | | C | 3 | | A | 1 | +------+------+ 及 Col1的每个不同值都有一个id号(在Col2中),因此我想要填充df2.Col2

我试图根据条件从另一个数据帧填充数据帧的一列。假设我的第一个数据帧是df1,第二个名为df2

# df1 is described as bellow :
+------+------+
| Col1 | Col2 |
+------+------+
|   A  |  1   |
|   B  |  2   |
|   C  |  3   |
|   A  |  1   |
+------+------+

Col1的每个不同值都有一个id号(在Col2中),因此我想要填充df2.Col2中的NaN值,其中df2.Col1==df1.Col1。 因此,我的第二个数据帧将如下所示:

# df2 :
+------+------+
| Col1 | Col2 |
+------+------+
|   A  |  1   |
|   B  |  2   |
|   D  |  NaN |
+------+------+
我使用的是Python 2.7,与和一起使用:

如果需要,仅在
id
列中检查复制:

df = df2.set_index('Col1').combine_first(df1.drop_duplicates().set_index('Col1')).reset_index()

下面是一个使用过滤器
df1.Col1==df2.Col1

df2['Col2'] = df1[df1.Col1 == df2.Col1]['Col2']
最好使用
loc
(但从我的观点来看,不太清楚)


看看numpy.where。我已经尝试过这个解决方案,但il返回:ValueError:只能比较标签相同的Series objectsok,在第1列中有两个a。使用
df1。首先删除重复项(inplace=True)
。请注意,如果您有两行不同的行,如“a1”和“a2”,则删除重复项不会删除其中一行,而且您仍然会遇到ValueError,这是一个好主意,因为它不知道要使用哪一行。
df = df2.set_index('Col1').combine_first(df1.drop_duplicates().set_index('Col1')).reset_index()
df2['Col2'] = df1[df1.Col1 == df2.Col1]['Col2']
df2['Col2'] = df1.loc[df1.Col1 == df2.Col2, 'Col2']