2017-01-17 5 views
-1

Я не знаю, почему это меня так запутывает. Я пытаюсь объединить два фрейма данных, и оба имеют один и тот же индекс (хотя, как записка, они могут быть не в одном порядке).объединить два dataframes с одним и тем же индексом (неупорядоченный)

df1 = |firstrow 10| 
     |secondrow 15| 

df2 = |secondrow 115| 
     |firstrow 1000| 

, и я хочу, чтобы в результате dataframe быть:

result = |firstrow 10 1000| 
     |secondrow 15 115| 

Я попытался сделать это:

df = pd.merge(df1,df2, on="INDEXNAME"), but it throws a KeyError on INDEXNAME 

спасибо!

+1

Пожалуйста, добавьте [mcve] –

+0

фигурной это - df1.join (df2). Автоматически использует индекс – keynesiancross

+1

Вы также можете использовать 'pd.merge (df1, df2, left_index = True, right_index = True)' для достижения того же, что и 'pd.join' –

ответ

1

Я думаю, что вы можете использовать concat (по умолчанию внешнего соединения):

df = pd.concat([df1, df2], axis=1) 

И если необходимо внутреннее соединение:

df = pd.concat([df1, df2], axis=1, join='inner') 

Или merge (по умолчанию inner присоединиться) с параметрами left_index и right_index :

df = pd.merge(df1, df2, left_index=True, right_index=True) 

Пример:

df1 = pd.DataFrame({'a':[10,15]}, index=['firstrow','secondrow']) 
df2 = pd.DataFrame({'b':[115,1000]}, index=['secondrow','firstrow']) 
print (df1) 
      a 
firstrow 10 
secondrow 15 

print (df2) 
       b 
secondrow 115 
firstrow 1000 

print (pd.concat([df1, df2], axis=1)) 
      a  b 
secondrow 15 115 
firstrow 10 1000 

print (pd.merge(df1, df2, left_index=True, right_index=True)) 
      a  b 
secondrow 15 115 
firstrow 10 1000 
Смежные вопросы