Frage

Ich habe mehrere Klassen, die alle auf denselben Pandas-Dataframe referenzieren, aber nur ein Teil des Datenrahmens ist für jede Klasse relevant.Ich möchte es auch leicht machen, auf die entsprechenden Zeilen zuzugreifen, ohne die Advanced-Indexierung zu verwenden, da er aufgrund der Anzahl der Niveau in dem Index wiederholt wird.Infolgedessen schrieb ich Code, der teilweise Funktionen erzeugt, damit jede Klasse seine Scheibe anzeigen kann.

generasacodicetagpre.

Ich würde jedoch vorziehen, wenn die Referenz nicht wie foo.x () (Datum] nicht aussehen musste, sondern könnte stattdessen wie foo.x [Datum] aussehen.

Infolgedessen habe ich einen Dekorateur erstellt, der die Funktion einwickeln würde, und den Wert zurücksenden.

generasacodicetagpre.

Mein Sorge ist, dass ich nicht immer den aktuellen Status des Datenframes erhalten werde.

ist das der richtige Weg, um mein Ziel zu erreichen?

War es hilfreich?

Lösung

Nun, ich würde mir persönlich vorschlagen, dass Sie Ihren Datenframe in ein Objekt wie so eingeben:

generasacodicetagpre.

Sie verwenden es wie so:

generasacodicetagpre.

Sie können weiter gehen und die Methoden als Eigenschaften hinzufügen, wenn er intuitiver sinnvoller ist.

generasacodicetagpre.

Es tut im Wesentlichen dasselbe, wie Sie es jetzt tun, aber es ist ein unkomplizierteres objektorientiertes Programmieren und - zumindest meiner Meinung nach - viel besser zu verstehen.

Sie können sich immer auf Ihren Datenframe zugreifen:

generasacodicetagpre.

oder dann könnten Sie mehr Pandas-Methoden direkt auf Ihrem Ansichtsobjekt implementieren, zum Beispiel:

generasacodicetagpre.

Ihr Objekt verhält sich mehr wie ein Datenframe.

Note, das ist nicht wirklich "dynamisch".Wenn Sie einen wirklich dynamischen Weg wünschen, können Sie die getattr -methode verwenden, um das auch so zu implementieren

generasacodicetagpre.

Dieses Muster wird allgemein als Zusammensetzung bezeichnet, und meine Lieblingsmethode, um Ihr "Problem" umzusetzen,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top