J'ai un df avec
col0 col1 col2 col3
a 1 2 text1
b 1 2 text2
c 1 3 text3
Et moi un autre fichier texte avec
col0 col1 col2
met1 a text1
met2 b text2
met3 c text3
Comment faire correspondre les valeurs de ligne de col3 dans mon premier df au fichier texte col2 et ajouter au df précédent uniquement la chaîne col0 sans changer la structure du df
Sortie désirée:
col0 col1 col2 col3 col4
a 1 2 text1 met1
b 1 2 text2 met2
c 1 3 text3 met3
3 réponses
print(df)
col0 col1 col2 col3
0 a 1 2 text1
1 b 1 2 text2
2 c 1 3 text3
print(df2)
col0 col1 col2
0 met1 a text1
1 met2 b text2
2 met3 c text3
Fusionner df et df2
df3 = df.merge(df2, left_on='col3', right_on='col2',suffixes=('','_1'))
Entretien ménager ... renommer les colonnes, etc.
df3 = df3.rename(columns={'col0_1':'col4'}).drop(['col1_1','col2_1'], axis=1)
print(df3)
col0 col1 col2 col3 col4
0 a 1 2 text1 met1
1 b 1 2 text2 met2
2 c 1 3 text3 met3
Et, réaffectez à df si vous le souhaitez.
df = df3
OU
df = df.assign(col4=df.merge(df2, left_on='col3', right_on='col2',suffixes=('','_1'))['col0_1'])
print(df)
col0 col1 col2 col3 col4
0 a 1 2 text1 met1
1 b 1 2 text2 met2
2 c 1 3 text3 met3
Appelez votre df df1
. Ensuite, chargez d'abord le fichier texte dans un dataframe en utilisant df2 = pd.read_csv('filename.txt')
. Maintenant, vous voulez renommer les colonnes dans df2
afin que la colonne sur laquelle vous souhaitez fusionner ait le même nom dans les deux colonnes:
df2.columns = ['new_col1', 'new_col2', 'col3']
Alors:
pd.merge(df1, df2, on='col3')
Vous pouvez utiliser pandas.dataframe.merge()
. Par exemple.:
df.merge(df2.loc[:, ['col0', 'col2']], left_on='col3', right_on='col2')
Questions connexes
De nouvelles questions
python-2.7
Python 2.7 est la dernière version majeure de la série 2.x, et n'est plus maintenue depuis le 1er janvier 2020. Utilisez la balise générique [python] sur toutes les questions Python. N'ajoutez pas cette balise simplement pour indiquer la version de Python que vous utilisez, sauf si la question concerne un problème spécifique à Python 2.7.