Como mesclar vários dataframes em pandas (com exemplo)


Você pode usar a seguinte sintaxe para mesclar vários DataFrames de uma vez no pandas:

 import pandas as pd
from functools import reduce

#define list of DataFrames
dfs = [df1, df2, df3]

#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge (left,right,on=[' column_name '],
                                            how=' outer '), dfs)

O exemplo a seguir mostra como usar essa sintaxe na prática:

Exemplo: mesclar vários DataFrames no Pandas

Suponha que temos os três DataFrames panda a seguir que contêm informações sobre jogadores de basquete de diferentes times:

 import pandas as pd

#createDataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'],
                    ' points ': [18, 22, 19, 14]})

df2 = pd. DataFrame ({' team ': ['A', 'B', 'C'],
                    ' assists ': [4, 9, 14]})

df3 = pd. DataFrame ({' team ': ['C', 'D', 'E', 'F'],
                    ' rebounds ': [10, 17, 11, 10]})

#view DataFrames
print (df1)

  team points
0 to 18
1 B 22
2 C 19
3 D 14

print (df2)

  team assists
0 to 4
1 B 9
2 C 14

print (df3)

  team rebounds
0 C 10
1 D 17
2 E 11
3 F 10

Podemos usar a seguinte sintaxe para mesclar os três DataFrames em um:

 from functools import reduce

#define list of DataFrames
dfs = [df1, df2, df3]

#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge (left,right,on=[' team '],
                                            how=' outer '), dfs)

#view merged DataFrame
print (final_df)

  team points assists rebounds
0 A 18.0 4.0 NaN
1 B 22.0 9.0 NaN
2 C 19.0 14.0 10.0
3 D 14.0 NaN 17.0
4 E NaN NaN 11.0
5 F NaN NaN 10.0

O resultado final é um DataFrame que contém as informações de todos os três DataFrames.

Observe que os valores NaN são usados para preencher células vazias no DataFrame final.

Para usar um valor diferente de NaN para preencher células vazias, você pode usar a função fillna() :

 from functools import reduce

#define list of DataFrames
dfs = [df1, df2, df3]

#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge (left,right,on=[' team '],
                                            how=' outer '), dfs). fillna (' none ')

#view merged DataFrame
print (final_df)

  team points assists rebounds
0 A 18.0 4.0 none
1 B 22.0 9.0 none
2 C 19.0 14.0 10.0
3 D 14.0 none 17.0
4 E none none 11.0
5 F none none 10.0

Cada uma das células vazias agora é preenchida com “ nenhum ” em vez de NaN .

Nota : Você pode encontrar a documentação completa da função merge no pandas aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Como mesclar dois DataFrames Pandas no índice
Como mesclar Pandas DataFrames em várias colunas
Como empilhar vários DataFrames Pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *