我有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。那么有人可以帮我吗?
答案 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