J'ai deux dataframes. Premièrement: et deuxième: p> 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
4 Réponses :
Essayez ceci:
pd.merge(df1,df2, how='inner', left_on='city',right_on='city')
Vous pouvez créer un sortie: p> dict code> qui mappe noms code> noms vers pays code> noms code>, puis utilisez-le comme une carte pour le PD .Series.map Code> Méthode:
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
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
C'est exactement comment j'ai fini par résoudre le problème