首页 > 解决方案 > 基于列位置的Python合并

问题描述

我有2个这样的数据框,

ID employee        group
1      Bob   Accounting
2     Jake  Engineering
3     Lisa  Engineering
4      Sue           HR

ID employee  hire_date
1     Lisa       2004
2      Bob       2008
3     Jake       2012
4      Sue       2014

现在我想在employee列上合并这两个数据框。唯一的问题是,与其提及列名employee,我只需要提及我会知道的员工列的位置。

简而言之,我想合并列上的 2 个数据框employee 而不提及列名,而仅提及列位置。

现在我尝试了这样的事情,

import pandas as pd

df1 = pd.DataFrame({'ID':[1,2,3,4], 'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'ID':[1,2,3,4],'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})

merged = pd.merge(df1, df2, left_on=df1.ix[:,[1]], right_on=df2.ix[:,[1]])

但它正在抛出ValueError。那么有人可以帮我解决这个问题吗?

标签: python-2.7pandas

解决方案


尝试这个:

df1.merge(df2, right_on=df2.columns[1], left_on=df1.columns[1])

输出:

   ID_x employee        group  ID_y  hire_date
0     1      Bob   Accounting     2       2008
1     2     Jake  Engineering     3       2012
2     3     Lisa  Engineering     1       2004
3     4      Sue           HR     4       2014

推荐阅读