如何在pandas中连接两个具有不同列名的数据框? - 蟒蛇

Hap*_*yPy 15 python merge pandas

df1 = pd.DataFrame({'a':[1,2,3],'x':[4,5,6],'y':[7,8,9]})
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]})
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用来自的键合并两个数据帧df1.我想我应该用pd.merge它,但我怎么能告诉pandas将值放在bdf2a列中df1.这是我想要实现的输出:

    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3   10  13  16
4   11  14  17
5   12  15  18
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 22

只需使用concatrename列,df2以便它对齐:

In [92]:
pd.concat([df1,df2.rename(columns={'b':'a'})], ignore_index=True)

Out[92]:
    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3  10  13  16
4  11  14  17
5  12  15  18
Run Code Online (Sandbox Code Playgroud)

同样你可以使用,merge但你需要重命名列如上:

In [103]:
df1.merge(df2.rename(columns={'b':'a'}),how='outer')

Out[103]:
    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3  10  13  16
4  11  14  17
5  12  15  18
Run Code Online (Sandbox Code Playgroud)


sco*_*tle 7

使用numpy连接数据帧,因此您不必重命名所有列(或显式忽略索引)。 np.concatenate也适用于任意数量的数据帧。

df = pd.DataFrame( np.concatenate( (df1.values, df2.values), axis=0 ) )
df.columns = [ 'a', 'x', 'y' ]
df
Run Code Online (Sandbox Code Playgroud)


Myk*_*tko 6

您可以重命名列,然后使用函数appendconcat

df2.columns = df1.columns
df1.append(df2, ignore_index=True)
# pd.concat([df1, df2], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

您还可以使用vstackfrom连接两个数据帧numpy并将生成的 ndarray 转换为数据帧:

pd.DataFrame(np.vstack([df1, df2]), columns=df1.columns)
Run Code Online (Sandbox Code Playgroud)