Joindre des tables/DataFrames avec une colonne commune en Python
j'ai deux images de données:
df1 = ['Date_Time',
'Temp_1',
'Latitude',
'N_S',
'Longitude',
'E_W']
df2 = ['Date_Time',
'Year',
'Month',
'Day',
'Hour',
'Minute',
'Seconds']
comme vous pouvez le voir les deux DataFrames ont Date_Time
comme une colonne commune. Je veux me Joindre à ces deux DataFrames par correspondance Date_Time
.
Mon code actuel: df.join(df2, on='Date_Time')
, mais cela donne une erreur.
9
demandé sur
Andy Hayden
2012-12-10 04:12:52
1 réponses
vous recherchez un merge
:
df1.merge(df2, on='Date_Time')
les mots-clés sont les mêmes que pour join
, mais join
utilise seulement l'index, voir "DataFrame style DataFrame joining / merging".
Voici un exemple simple:
import pandas as pd
df1 = pd.DataFrame([[1, 2, 3]])
df2 = pd.DataFrame([[1, 7, 8],[4, 9, 9]], columns=[0, 3, 4])
In [4]: df1
Out[4]:
0 1 2
0 1 2 3
In [5]: df2
Out[5]:
0 3 4
0 1 7 8
1 4 9 9
In [6]: df1.merge(df2, on=0)
Out[6]:
0 1 2 3 4
0 1 2 3 7 8
In [7]: df1.merge(df2, on=0, how='outer')
Out[7]:
0 1 2 3 4
0 1 2 3 7 8
1 4 NaN NaN 9 9
si vous essayez de rejoindre une colonne, vous obtenez une erreur:
In [8]: df1.join(df2, on=0)
# error!
Exception: columns overlap: array([0], dtype=int64)
20
répondu
Andy Hayden
2012-12-10 01:36:13