import pandas as pd
import numpy as npen hauteur pd.concat()¶
# exemple 1
# les deux dataframes ont les mêmes colonnes
# (ici on crée les dataframe à partir d'un dict décrivant les colonnes)
df1 = pd.DataFrame(
data={
'name': ['Bob', 'Lisa', 'Sue'],
'group': ['Accounting', 'Engineering', 'HR']})
df2 = pd.DataFrame(
data={
'name': ['John', 'Mary', 'Andrew'],
'group': ['HR', 'Accounting', 'Engineering',]})df1Loading...
df2Loading...
# nous ne gardons pas les index
# de chaque sous-dataframe
pd.concat(
[df1, df2], ignore_index=True
)Loading...
# si les dataframes sont indexées
# par la colonne 'name'
pd.concat(
[df1.set_index('name'),
df2.set_index('name')]
)Loading...
en largeur pd.merge()¶
alignements¶
exemples de merge()¶
merge() implicite¶
# exemple 1
# les deux dataframes ont exactement une colonne en commun: 'name'
df1 = pd.DataFrame(
data={
'name': ['Bob', 'Lisa', 'Sue'],
'group': ['Accounting', 'Engineering', 'HR'],
})
df2 = pd.DataFrame(
data={
'name': ['Lisa', 'Bob', 'Sue'],
'hire_date': [2004, 2008, 2014],
})df1Loading...
df2Loading...
# sans rien préciser, on JOIN
# sur la colonne commune 'name'
df1.merge(df2)Loading...
# on peut aussi l'écrire comme ceci
pd.merge(df1, df2)Loading...
merge() explicite¶
# exemple 2
# cette fois il faut aligner l'index de gauche
# avec la colonne 'name' à droite
df1 = pd.DataFrame(
index = ['Bob', 'Lisa', 'Sue'], # l'index
data={'group': ['Accounting', 'Engineering', 'HR']}) # une seule colonne
df2 = pd.DataFrame(
data = {'name': ['Lisa', 'Bob', 'Sue'],
'hire_date': [2004, 2008, 2014]})df1Loading...
df2Loading...
# du coup ici sans préciser de paramètres,
# ça ne fonctionnerait pas
# il faut être explicite
df1.merge(df2,
left_index=True, right_on='name')Loading...
# ou encore
pd.merge(df1, df2,
left_index=True, right_on='name')Loading...