Python 匹配两个dataframe中的两列,如果它们匹配,则获取相应的列值
我有两个数据Python 匹配两个dataframe中的两列,如果它们匹配,则获取相应的列值,python,python-3.x,Python,Python 3.x,我有两个数据Df1和Df2。我的Df1['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
Df1
和Df2
。我的Df1['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
函数,因为我还有一些其他约束。您可以将应用与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)
你可以使用字典,不是很优雅,但可能很有用
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