首页 > 解决方案 > 根据两个条件从熊猫数据框中提取值

问题描述

我有两个数据框,df1并且df2

df1 = A B
      1 a
      1 
      1 5
      1 b
      1 c
      1 d


df2 = A B C
      1 a apple
      1  cherry
      1 5 apple
      1 b orange

我想基于 A 和 B 列合并这两个数据框。我的逻辑如下:

if df1['A'][0] is in df2['A'] and df1['B'][0] is in df2['B'] and they are equal:

      then create new column df1['New Product'] = df2['C'] 

df1如果满足此条件,我需要在其中创建第三列。

我很努力,但没有任何成功。我猜索引位置很重要。

这是我不起作用的解决方案:

df1['New Product'] = df2['C'][(df1['A'].isin(df2['A'])) & (df1['B'].isin(df2['B']))] 

预期的输出应该是:

df1 = A B C
      1 a apple
      1  cherry
      1 5 apple
      1 b orange
      1 c nan
      1 d nan 

标签: pythonpandasdataframe

解决方案


尝试简单的左连接,

df=pd.merge(df1,df2,on=['A','B'],how='left').rename(columns={'C':'New Product'})

输出/输出:

   A  B New Product
0  1  a       apple
1  1         cherry
2  1  5       apple
3  1  b      orange
4  1  c            
5  1  d            

推荐阅读