Pandas - Erklärung zur langsamen Apply-Funktion

Apply-Funktion scheint bei einem großen Datenrahmen (etwa 1 bis 3 Millionen Zeilen) sehr langsam zu arbeiten.

Ich habe hier verwandte Fragen geprüft, wieSpeed up Pandas anwenden Funktion, undZählen innerhalb von Pandas apply () -Funktion, es scheint, der beste Weg, es zu beschleunigen, ist, die Apply-Funktion nicht zu verwenden:)

Für meinen Fall habe ich zwei Arten von Aufgaben mit der Apply-Funktion zu tun.

Zuerst: Mit Lookup-Dict-Abfrage anwenden

f(p_id, p_dict):
    return p_dict[p_dict['ID'] == p_id]['value']

p_dict = DataFrame(...)  # it's another dict works like lookup table
df = df.apply(f, args=(p_dict,))

Second: bewerbe dich mit groupby

f(week_id, min_week_num, p_dict):
    return p_dict[(week_id - min_week_num < p_dict['WEEK']) & (p_dict['WEEK'] < week_id)].ix[:,2].mean()

f_partial = partial(f, min_week_num=min_week_num, p_dict=p_dict)
df = map(f, df['WEEK'])

Ich schätze, für den ersten Fall könnte dies mit einem Dataframe-Join geschehen, während ich mir nicht sicher bin, wie hoch die Ressourcenkosten für einen solchen Join für einen großen Datensatz sind.

Meine Frage ist

Ist in den beiden oben genannten Fällen eine Möglichkeit zur Substitution vorhanden?Warum ist das so langsam? Für den Dict-Lookup-Fall sollte es O (N) sein, es sollte nicht so viel kosten, selbst wenn N 1 Million ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage