匹配两个数据框中的两个列,如果匹配则获取相应的列值

时间:2020-07-24 08:52:10

标签: python python-3.x

我有两个数据Df1Df2Df1['Col2]中只有几行是空的。我想用Df2的相应值填充此空白行。

Df1
Col1 Col2
1    AA
2   
2   
2   
3    AC
3    AC

Df2
Cluster label
1        AA
2        AB
3        AC
4        AD

Desired Output

Col1    Col2
1       AA
2       AB
2       AB
2       AB
3       AC
3       AC

我正在尝试下面的代码,但没有得到结果:

Df1['Col2'] =np.where((Df2['Cluster']==Df1['Col1']),Df2['label'],'No label found')

我也不能使用merge函数,因为我还有其他一些限制。

2 个答案:

答案 0 :(得分:1)

您可以将col2上的条件与条件相结合

df1{"col2"] = df1.apply(lambda x: df2[df2['Cluster'] == x ['col1']]['label'].tolist()[0] if x['col2'] is None else x['col2'], axis = 1)

答案 1 :(得分:1)

您可以使用字典,虽然不算太优雅,但可能会有用。

cluster_dict = df2.set_index('Cluster')['label'].to_dict()
df1.set_index('Col1')['Col2'].fillna(cluster_dict).reset_index()

   col1 col2
0     1   AA
1     2   AB
2     2   AB
3     2   AB
4     3   AC
5     3   AC