简体   繁体   中英

How to merge two dataframes row wise in pandas

I want to concatenate my two dataframes (df1 and df2) row wise to obtain dataframe (df3) in below format:

1st row of df3 have 1st row of df1.

2nd row of df3 have 1st row of df2.

3rd row of df3 have 2nd row of df1.

4th row of df3 have 2nd row of df2. .. and so on

Any idea how can I do that?

Note - both dataframes have same column names

A simple way would be modifying the index for dataframes before concatenation, then sort on it!

df1 = pd.DataFrame(

    {

        "A": ["A0", "A1", "A2", "A3"],

        "B": ["B0", "B1", "B2", "B3"],

        "C": ["C0", "C1", "C2", "C3"],

        "D": ["D0", "D1", "D2", "D3"],

    },

    index=[0, 2, 4, 6],

)



df2 = pd.DataFrame(

    {

        "A": ["A4", "A5", "A6", "A7"],

        "B": ["B4", "B5", "B6", "B7"],

        "C": ["C4", "C5", "C6", "C7"],

        "D": ["D4", "D5", "D6", "D7"],

    },

    index=[1, 3, 5, 7],

)
pd.concat((df1, df2)).sort_index(axis = 0)

output:

    A   B   C   D
0  A0  B0  C0  D0
1  A4  B4  C4  D4
2  A1  B1  C1  D1
3  A5  B5  C5  D5
4  A2  B2  C2  D2
5  A6  B6  C6  D6
6  A3  B3  C3  D3
7  A7  B7  C7  D7

You can use pandas.concat , and sort_index :

df1 = pd.DataFrame({'col': list('AXYZ')})
df2 = pd.DataFrame({'col': list('EDCB')})

(pd.concat([df1, df2])
   .sort_index()
 )

Output:

  col
0   A
0   E
1   X
1   D
2   Y
2   C
3   Z
3   B

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM