我有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中,以创建此合并的一对多数据帧,但这花了很多时间才能得到答案。我想知道是否有任何更简单的解决方案。有点快。

最佳答案

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

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

关于python - Pandas 根据ID组合2个数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58869069/

10-09 16:37
查看更多