2016-01-06 4 views
3

Предположим, что у меня есть два DataFrame df1 и df2, ключ соединения в df1 - это столбец, но ключ в df2 является индексом.Как объединить два кадра данных Pandas по одному столбцу и одному индексу

df1 
Out[88]: 
    A B C 
0 1 A 10 
1 2 B 20 
2 3 C 30 
3 4 D 40 
4 5 E 50 

df2 

Out[89]: 
    D E 
A 22 2 
B 33 3 
C 44 4 
D 55 5 
E 66 6 

Я хочу сделать что-то подобное,

pd.merge(df1,df2, how= 'outer',left_on="B" , right_on= df2.index) 

Я знаю, что это обязательно fail.I можно обойти путем сброса индекс df2, но в приложении у меня будет индексировать назад ,

df2=df2.reset_index() 

Мне интересно, легко ли просто объединить одну колонку и один индекс?

+0

try 'pd.merge (df1, df2, how = 'outer', left_on =" B ", right_index = True)' – EdChum

ответ

5

Вы можете указать right_index=True сливаться по индексу для правой части:

In [193]: 
pd.merge(df1,df2, how= 'outer',left_on="B" , right_index= True) 

Out[193]: 
    A B C D E 
0 1 A 10 22 2 
1 2 B 20 33 3 
2 3 C 30 44 4 
3 4 D 40 55 5 
4 5 E 50 66 6 
0

Я думаю, вы также можете использовать присоединиться:

df1.join (df2, на = 'B', то как = 'external')

Смежные вопросы