Python 将多个列插入另一个数据帧

Python 将多个列插入另一个数据帧,python,pandas,Python,Pandas,假设我有以下数据帧df1: name course yob city paul A 1995 london john A 2005 berlin stacy B 2015 vienna mark D 2013 madrid 以及以下数据帧df2: name height occupation paul 185 student mark

假设我有以下数据帧df1:

name    course   yob     city
paul    A        1995    london
john    A        2005    berlin
stacy   B        2015    vienna
mark    D        2013    madrid
以及以下数据帧df2:

name    height   occupation   
paul    185      student    
mark    162      pilot
我想将它们结合起来,以获得:

name    course   height   occupation   yob     city
paul    A        185      student      1995    london
john    A        NaN      NaN          2005    berlin
stacy   B        NaN      NaN          2015    vienna
mark    D        162      pilot        2013    madrid
因此,我的想法是,我有df1,这是我的主要数据结构,我想在df1中的特定位置(即在本例中,在course和yob列之间)插入df2的列(只包含一些名称的信息)。列的顺序很重要,不应更改


最直接/最优雅的方法是什么?

不清楚您想要左连接还是外连接。下面是左连接的简单方法

对于结果,我使用第一个数据帧作为df1,第二个数据帧作为df2

import pandas as pd

df_result = pd.merge (left=df1, right=df2, how='left', on='name')
# Reorder the columns
df_result = df_result[["name", "course", "height", "occupation", "yob", "city"]]

print(df_result)
如果你想要外部连接

df_result = pd.merge (left=df1, right=df2, how='outer', on='name')

一个通用的方法将被合并,然后创建一个带有“代码> DF2”的列表。列不包括列表中的匹配代码列>代码> DF1。列< /代码>和<代码>索引()/代码>:< /P> 然后在轴=1上使用

final=final.reindex(s,axis=1)
print(final)


非常感谢。我并不担心联接的类型,因为在我的例子中,df2在df1中总是有名称的子集。我对你的回答唯一的问题是,我在问题中指定的列的顺序不会被保留。我需要在df1的两个特定列之间插入df2的列。按您需要的顺序添加stmt df_result=df_result['name','course',…]]
final=final.reindex(s,axis=1)
print(final)
    name course  height occupation   yob    city
0   paul      A   185.0    student  1995  london
1   john      A     NaN        NaN  2005  berlin
2  stacy      B     NaN        NaN  2015  vienna
3   mark      D   162.0      pilot  2013  madrid