Home > OS >  How to concat two Pandas dataframes that have the same columns but only if the value of one column i
How to concat two Pandas dataframes that have the same columns but only if the value of one column i

Time:07-30

I have two dataframes like the below:

DF1:

col1 col2
22 yes
22 no
24 yes
22 no
27 no

DF2:

col1 col2
28 yes
22 no
29 yes
22 yes
27 yes

I want to concat both dataframes, so that I end up with the below. I don't want to join the dataframes on col1, as that doubles the number of columns. I just want to combine the dataframe vertically if they share a common value on "col1." Any help on this?

DF3:

col1 col2
22 yes
22 no
22 no
22 no
22 yes
27 no
27 yes

CodePudding user response:

Let us first find the common values using set intersection then concat the required rows from df1 and df2 and optionally sort the values

i = set(df1['col1']) & set(df2['col1'])
pd.concat([df1[df1['col1'].isin(i)], df2[df2['col1'].isin(i)]]).sort_values('col1')

   col1 col2
0    22  yes
1    22   no
3    22   no
1    22   no
3    22  yes
4    27   no
4    27  yes
  • Related