Two DataFrames have matching values stored in their corresponding 'names' and 'flights' columns. While the first DataFrame stores the distances the other stores the dates:
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
I would like to merge them into single Dataframe in a such a way that the matching entities are synced with the corresponding distances and dates. So the resulted DataFame would look like this:
resultDF:
distances names dates
0 100 A 1/1/16
1 200 B 1/2/16
2 300 C 1/3/16
What would be the way of accomplishing it?
There is nothing that ties these dataframes together other than the positional index. You can accomplish your desired example output with pd.concat
pd.concat([distancesDF, datesDF.dates], axis=1)
To address the edit and @kartik's comment
if we create the dfs to match what's displayed.
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)
then the following two options produce the same and probably desired result.
merge
distancesDF.merge(datesDF, left_on='names', right_on='flights')[['distances', 'names', 'dates']]
join
distancesDF.join(datesDF.set_index('flights'), on='names')
both produce
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With