0
votes

Remplir la valeur de colonne avec les données correspondantes d'un autre Dataframe (fusionner ??)

J'ai deux dataframes. Premièrement: xxx pré>

et deuxième: p> xxx pré>

Comment puis-je obtenir le Dataframe suivant? Nous devons juste affecter un pays correct à la ville correspondante comme une nouvelle colonne dans le deuxième Dataframe. P>

  country city  region
0  Norway    a       1
1  Norway    a       2
2  Norway    b       3
3  Norway    b       4
4  Sweden    c       5
5  Sweden    c       6
6  Sweden    c       7
7  Sweden    d       8


0 commentaires

4 Réponses :


0
votes

Essayez ceci:

pd.merge(df1,df2, how='inner', left_on='city',right_on='city')


0 commentaires

2
votes

Vous pouvez créer un dict qui mappe noms noms vers pays noms , puis utilisez-le comme une carte pour le PD .Series.map Méthode: xxx

sortie: xxx


0 commentaires

0
votes

De cette façon fonctionne avec le jeu de données de votre question.

import pandas as pd

dummy_data1 = {
    'country': ['Norway', 'Norway', 'Sweden', 'Sweden'],
    'city': ['A', 'B', 'C', 'D']}

dummy_data2 = {
    'city': ['A', 'A', 'B', 'B', 'C', 'C', 'C', 'D'],
    'region': ['1', '2', '3', '4', '5', '6', '7', '8']}

df1 = pd.DataFrame(dummy_data1, columns = ['country', 'city'])
df2 = pd.DataFrame(dummy_data2, columns = ['city', 'region'])

df3 = pd.merge(df1,df2, how='inner', left_on='city', right_on='city')

print (df3)
# output
#   country city region
# 0  Norway    A      1
# 1  Norway    A      2
# 2  Norway    B      3
# 3  Norway    B      4
# 4  Sweden    C      5
# 5  Sweden    C      6
# 6  Sweden    C      7
# 7  Sweden    D      8


0 commentaires

1
votes

Vous pouvez fusionner les deux dataframes, mais vous devez d'abord déposer des doublons dans le premier Dataframe:

pd.merge (df1.drop_duplicates (), DF2) code> p> P> P> P> Sortie: P>

  country city  region
0  Norway    a       1
1  Norway    a       2
2  Norway    b       3
3  Norway    b       4
4  Sweden    c       5
5  Sweden    c       6
6  Sweden    c       7
7  Sweden    d       8


1 commentaires

C'est exactement comment j'ai fini par résoudre le problème