我有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中,以创建此合并的一对多数据帧,但这花了很多时间才能得到答案。我想知道是否有任何更简单的解决方案。有点快。
答案 0 :(得分:1)
在“ drugid”上展开df2
,使每个药品ID都位于其自己的行中,然后合并“ drugid”上的数据框。
df2 = df2.explode('drugid')
result = df2.merge(df1, on='drugid', how='left')