熊猫:根据另一个数据框分配值

Luc*_*a91 5 python pandas

我必须使用如下所示的数据框:

 df1:          condition        
               A               
               A              
               A               
               B              
               B             
               B           
               B   

 df2:          condition      value   
               A               1
               B               2
Run Code Online (Sandbox Code Playgroud)

我想为每个条件分配其值,向 df1 添加一列以获得:

 df1:          condition     value      
               A               1
               A               1
               A               1
               B               2
               B               2
               B               2
               B               2
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?先感谢您!

jez*_*ael 11

使用mapby Seriescreated by set_indexif 只需要追加一列:

df1['value'] = df1['condition'].map(df2.set_index('condition')['value'])

print (df1)
  condition  value
0         A      1
1         A      1
2         A      1
3         B      2
4         B      2
5         B      2
6         B      2
Run Code Online (Sandbox Code Playgroud)

或者merge如果df2有更多列,则与左连接一起使用:

df = df1.merge(df2, on='condition', how='left')
print (df)
  condition  value
0         A      1
1         A      1
2         A      1
3         B      2
4         B      2
5         B      2
6         B      2
Run Code Online (Sandbox Code Playgroud)