Ich möchte neue Methoden und Attribute zu Pandas Series
und DataFrames
hinzufügen. Hier ist sehr einfaches Beispiel: Ich möchte eine Methode, die die Anzahl der Zeit zählt der Unterschied zwischen einer Reihe und der vorherige ist nicht 1.Python pandas: Unterklasse-Serie und Datenrahmen
Hier ist, was ich hatte bisher von Unter classing die Pandas Objekte:
import pandas as pd
class Serie(pd.Series):
def gaps(self):
return (self.diff().fillna(1) != 1).sum()
class DataSet(pd.DataFrame):
_constructor_sliced = Serie
Aber basierend auf this answer scheint es, dass ich diese stattdessen tun:
def gaps(self):
return (self.diff().fillna(1) != 1).sum()
pd.Series.gaps = gaps
es scheint ebenso gut zu funktionieren!
In[1]: df = pd.DataFrame({'A':[1,2,4], 'B':[3,2,1]})
In[2]: df.A.gaps()
Out[2]: 1
Jetzt die Frage: Was ist die beste Praxis für solche Situationen? Die zweite Option scheint viel einfacher zu sein als das Unterklassifizieren, aber ich vermisse etwas ... Gibt es Vorbehalte, dies zu tun? Oder vielleicht gibt es andere Möglichkeiten, die ich vermisst habe.