Python 将多个列插入另一个数据帧
假设我有以下数据帧df1: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
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