Je me demande s'il existe un moyen plus efficace de faire une fonction de type "index & match" qui est populaire dans Excel. Par exemple, - donné deux pandas DataFrames, mettez à jour le df_1 avec l'information trouvée dans df_2:pandas dataframe index match
import pandas as pd
df_1 = pd.DataFrame({'num_a':[1, 2, 3, 4, 5],
'num_b':[2, 4, 1, 2, 3]})
df_2 = pd.DataFrame({'num':[1, 2, 3, 4, 5],
'name':['a', 'b', 'c', 'd', 'e']})
Je travaille avec des ensembles de données qui ont ~ 80.000 lignes dans les deux df_1 et df_2 et mon but est de créer deux nouvelles colonnes dans df_1, "nom_a" et "nom_b".
Ci-dessous est la méthode la plus efficace que je pourrais trouver. Il a pour être un meilleur moyen!
name_a = []
name_b = []
for i in range(len(df_1)):
name_a.append(df_2.name.iloc[df_2[
df_2.num == df_1.num_a.iloc[i]].index[0]])
name_b.append(df_2.name.iloc[df_2[
df_2.num == df_1.num_b.iloc[i]].index[0]])
df_1['name_a'] = name_a
df_1['name_b'] = name_b
Entraînant:
>>> df_1.head()
num_a num_b name_a name_b
0 1 2 a b
1 2 4 b d
2 3 1 c a
3 4 2 d b
4 5 3 e c