2016-10-17 3 views
5

Два DataFrames имеют соответствующие значения, хранящиеся в соответствующих столбцах «имена» и «полеты». Хотя первые DataFrame магазинов расстояния остальные хранит даты:Как объединить два DataFrames в одно совпадающие значения столбцов

import pandas as pd 

distances = {'names': ['A', 'B','C'] ,'distances':[100, 200, 300]} 
dates = {'flights': ['C', 'B', 'A'] ,'dates':['1/1/16', '1/2/16', '1/3/16']} 

distancesDF = pd.DataFrame(distances) 
datesDF = pd.DataFrame(dates) 

distancesDF:

distances names 
0  100  A 
1  200  B 
2  300  C 

datesDF:

dates flights 
0 1/1/16  A 
1 1/2/16  B 
2 1/3/16  C 

Я хотел бы объединить их в единый Dataframe в таким образом, что соответствующие объекты синхронизируются с соответствующими расстояниями и датами. Таким образом, в результате DataFame будет выглядеть следующим образом:

resultDF:

distances names  dates 
0  100  A 1/1/16 
1  200  B 1/2/16 
2  300  C 1/3/16 

Что бы способ ее решения?

ответ

2

Ничто не связывает эти данные, кроме позиционного индекса. Вы можете достичь желаемого пример вывода с pd.concat

pd.concat([distancesDF, datesDF.dates], axis=1) 

enter image description here


Для решения редактирования и @ комментарий Картик в

если мы создаем ДФС, чтобы соответствовать, что отображается.

distances = {'names': ['A', 'B','C'] ,'distances':[100, 200, 300]} 
dates = {'flights': ['A', 'B', 'C'] ,'dates':['1/1/16', '1/2/16', '1/3/16']} 

distancesDF = pd.DataFrame(distances) 
datesDF = pd.DataFrame(dates) 

тогда следующие два варианта дают тот же и, возможно, желаемый результат.

слияния

distancesDF.merge(datesDF, left_on='names', right_on='flights')[['distances', 'names', 'dates']] 

присоединиться

distancesDF.join(datesDF.set_index('flights'), on='names') 

оба производят

enter image description here

+0

Отличное решение. Короче и просто! Благодаря! – alphanumeric

+1

Эй! Но колонка 'names' не совпадает с столбцом' flight'? Я бы предпочел сделать «слияние», чем «concat» ... – Kartik

+0

Kartik, пожалуйста, разместите свое решение, используя 'merge'. – alphanumeric

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