熊猫结合基于ID的2个数据框

时间:2019-11-15 01:31:32

标签: python pandas concatenation

我有2个数据框,如图所示

df1 = 
drugid          v1 v2 v3                            
1             a   b   c                    
3             g  d   s            
5             n  n  n             

df2 = 
trialID        drugid             v4    v5   v6           
10             [1,3,5]            k       k    k                                               
20              [3,5]             k1     k2    k3                    
30              [5,1]             h       g    s            

我希望得到的数据框为:

df_result = 
trial_id     drug_id     v4   v5   v6   v1   v2   v3
10             1          k    k    k   a     b    c
10             3          k    k    k   g     d    s
10             5          k    k    k   n     n    n
20             3          k1   k2   k3  g     d    s
20             5
30             5
30             1  

我使用loop + pd.concat合并两行,然后再次使用pd.concat将它们合并到Combined_df中,以创建此合并的一对多数据帧,但这花了很多时间才能得到答案。我想知道是否有任何更简单的解决方案。有点快。

1 个答案:

答案 0 :(得分:1)

在“ drugid”上展开df2,使每个药品ID都位于其自己的行中,然后合并“ drugid”上的数据框。

df2 = df2.explode('drugid')
result = df2.merge(df1, on='drugid', how='left')