Home > Blockchain >  Concatenate 2 dataframes based on conditions
Concatenate 2 dataframes based on conditions

Time:11-01

I have 2 dataframes, df_products_cp, like this one:

product_id version country
1111 2 CO
1111 2 BR
1111 2 MX
2222 2 CO
3333 2 CO
3333 2 MX
4444 2 CO
4444 2 BR
4444 2 MX

and df_products_ec like this one:

product_id version country
1111 3 CO
1111 3 MX
2222 3 CO
4444 3 CO
4444 3 BR

How can I concatenate both so that I only get a single dataframe like this one, when the product_id/country combination is found in both dataframes?

product_id version country
1111 2 CO
1111 3 CO
1111 2 MX
1111 3 MX
2222 2 CO
2222 3 CO
4444 2 CO
4444 3 CO
4444 2 BR
4444 3 BR

CodePudding user response:

Let us do merge then wide_to_long

out = pd.wide_to_long(df1.merge(df2,on=['product_id','country']),
                      'version',
                      ['product_id','country'],
                      j = 'drop',
                      suffix = '\w ').reset_index().drop(['drop'],axis = 1)
Out[275]: 
   product_id country  version
0        1111      CO        2
1        1111      CO        3
2        1111      MX        2
3        1111      MX        3
4        2222      CO        2
5        2222      CO        3
6        4444      CO        2
7        4444      CO        3
8        4444      BR        2
9        4444      BR        3
  • Related