Ich habe folgende Datenrahmen, die etwa 4000 Tickers hat und in insgesamt etwa 2 Millionen Zeilen:Pandas: GROUPBY Fillna Problem
Ticker Date Rank
1 01/01/2000 5
1 01/02/2000 NaN
2 01/01/2000 4
2 01/02/2000 2
ich jetzt den folgenden Code Vortrages den Rang Säule laufen gelassen, die vollständig funktioniert Fine .:
import pandas as pd
df= df.sort_values(by=["Ticker", "Date"], ascending=[True,True])
df['Rank'] = df.groupby('Ticker')['Rank'].fillna(value=None, method="ffill")
Allerdings möchte ich jetzt eine andere Spalte übertragen. Um diese Spalte zu erstellen ich folgendes tun:
import numpy as np
df["Code"]=np.NaN
In dieser Funktion ich einige Code schreiben, dass etwa 200 Werte um 1 nach dem Datum und Ticker-Werte in der df „add“ ersetzt werden. Dieser Code worksand sieht wie folgt vor:
df["Code"][(df.Date == add) & (df["Ticker"] == column)] = 1
Das macht meine Datenrahmen sieht wie folgt aus:
Ticker Date Rank Code
1 01/01/2000 5 NaN
1 01/02/2000 NaN NaN
2 01/01/2000 4 1
2 01/02/2000 2 NaN
Nun, ich möchte diese Spalte Vortrages, aber der Code dauert ewig.
import pandas as pd
df= df.sort_values(by=["Ticker", "Date"], ascending=[True,True])
df['Code'] = df.groupby('Ticker')['Code'].fillna(value=None, method="ffill")
Ich habe es für zwei Tage ausgeführt und mein PC ist abgestürzt. Es muss hier ein Fehler in der Art und Weise sein, wie ich die Dinge mache, weil der obige Vortrag so schnell läuft und dieser nicht einmal endet. Ich habe den dtype von "Code" überprüft und es ist float64.
Kann jemand helfen?
Schwierige Frage, warum es sehr lange Zeit. Aber ich glaube, wenn Gruppen bereits sortiert sind, fügen Sie 'sort = False' hinzu, um die Leistung zu verbessern. – jezrael