Python根据列位置合并

时间:2018-10-04 17:17:29

标签: python-2.7 pandas

我有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之外,我只需要提及我将知道的employee列的位置。

简而言之,我想在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。那么有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

尝试一下:

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

答案 1 :(得分:1)

您可以使用list(df)访问可以按位置引用的列名列表:

merged = pd.merge(df1, df2, left_on = list(df1)[1], right_on = list(df2)[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