Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Concatenating two Pandas DataFrames and not change index order

Basic question – I am trying to concatenate two DataFrames on the same columns but not change the index order, For example:

df1 = pd.DataFrame({'kabat_number':['H1','H2','H2A','H3','H4','H20','H20A','H30','H31'], 'AA':['A','C','S','Y','R','C','Y','V','I']})
df2 = pd.DataFrame({'kabat_number':['H1','H2','H3','H4','H20A','H20B','H20C','H30','H31'],'AA':['A','C','Y','R','C','Y','L','G','V']})
dfs = pd.merge(df1,df2,on='kabat_number',how='outer')
print(dfs)

   kabat_number AA_x AA_y
0            H1    A    A
1            H2    C    C
2           H2A    S  NaN
3            H3    Y    Y
4            H4    R    R
5           H20    C  NaN
6          H20A    Y    C
7           H30    V    G
8           H31    I    V
9          H20B  NaN    Y
10         H20C  NaN    L

the merge result order changed, (H20B,H20C was put in the end).

but what i want to get is :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

   kabat_number AA_x AA_y
0            H1    A    A
1            H2    C    C
2           H2A    S  NaN
3            H3    Y    Y
4            H4    R    R
5           H20    C  NaN
6          H20A    Y    C
7          H20B  NaN    Y
8          H20C  NaN    L
9           H30    V    G
10          H31    I    V

also i try sort=False , the order is changed still, how could i get the result what i want? thanks!

>Solution :

Sort with natsort_key after the merge:

# pip install natsort
from natsort import natsort_key

dfs = (pd.merge(df1,df2,on='kabat_number',how='outer')
         .sort_values(by='kabat_number', key=natsort_key, ignore_index=True)
      )

Output:

   kabat_number AA_x AA_y
0            H1    A    A
1            H2    C    C
2           H2A    S  NaN
3            H3    Y    Y
4            H4    R    R
5           H20    C  NaN
6          H20A    Y    C
7          H20B  NaN    Y
8          H20C  NaN    L
9           H30    V    G
10          H31    I    V
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading