Ich führe einen Codeschnipsel durch, der eine Datenbank abfragt und dann einen Pandas-Datenrahmen mit dem Wert 1 ausfüllt, wenn das Tupel in der Abfrage vorhanden ist. Dies geschieht durch Ausführen der Abfrage, iteriert dann über die Tupel und füllt den Datenrahmen aus. Die Abfrage gibt jedoch fast 8 Millionen Datenzeilen zurück.Füllwert eines Pandas-Datenrahmens aus einer großen DB-Abfrage (Python)
Meine Frage ist, ob jemand weiß, wie man einen Prozess so beschleunigt. Hier ist der folgende Code:
user_age = pd.read_sql_query(sql_age, datastore, index_col=['userid']).age.astype(np.int, copy=False)
x = pd.DataFrame(0, index=user_age.index, columns=range(366), dtype=np.int8)
for r in pd.read_sql_query(sql_active, datastore, chunksize=50000):
for userid, day in r.itertuples(index=False):
x.at[userid, day] = 1
Vielen Dank im Voraus!
Das ist brutal. Ich kann mir keinen schnelleren Weg vorstellen. – piRSquared