pandas dataframe index-match

Frage ich mich, ob es eine effizientere Art und Weise zu tun, die eine "index & match" type-Funktion, die beliebt in excel. Zum Beispiel - zwei pandas DataFrames, aktualisieren Sie die df_1 mit Informationen, die in df_2:

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']})

Arbeite ich mit Daten-sets, die ~80.000 Zeilen in beiden df_1 und df_2 und mein Ziel ist, erstellen Sie zwei neue Spalten in df_1, "name_a" und "name_b".

Unten ist die effizienteste Methode, die ich kommen konnte mit. Es hat der bessere Weg zu sein!

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

Ergibt:

>>> 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
InformationsquelleAutor A. Martin | 2017-06-02
Schreibe einen Kommentar