堆叠/合并/合并具有不同行数和列数的两个不同DataFrame

时间:2020-09-02 14:18:46

标签: python pandas

输入
Df1:

    A    B    C
a   2    4    4
b   1    6    3
c   4    2    8

Df2:

P    Q    R    S    T
5    3    8    3    0
4    8    6    8    3

所需的输出

    A    B    C
a   2    4    4
b   1    6    3
c   4    2    8
P    Q    R    S    T
5    3    8    3    0
4    8    6    8    3

我想将Df1Df2互相连接,如下所示。
我该怎么办?

1 个答案:

答案 0 :(得分:1)

不确定为什么需要它,但是下面的代码可以解决问题:


import pandas as pd

# initialize dataframes
df1 = pd.DataFrame([[2, 4, 4], [1, 6, 3], [4, 2, 8]],
                   columns=['A', 'B', 'C'], index=['a', 'b', 'c'])

df2 = pd.DataFrame([[3, 8, 3, 0], [8, 6, 8, 3]],
                   columns=['Q', 'R', 'S', 'T'], index=[5, 4])
df2.index.name = 'P'

# prepare for concat
df2.loc[df2.index.name] = df2.columns
df2.index = df2.index.astype(str)
df2 = df2.sort_index(ascending=False)
df2.columns = ['A', 'B', 'C', '']
df2.index.name = ''

df1[''] = ['','','']


# concat
df = pd.concat([df1, df2])

输出:

In [2]: df1
Out[2]: 
   A  B  C  
a  2  4  4  
b  1  6  3  
c  4  2  8  

In [3]: df2
Out[3]: 
   A  B  C   
             
P  Q  R  S  T
5  3  8  3  0
4  8  6  8  3

In [4]: df
Out[4]: 
   A  B  C   
a  2  4  4   
b  1  6  3   
c  4  2  8   
P  Q  R  S  T
5  3  8  3  0
4  8  6  8  3