Есть несколько вопросов по этой теме, но я надеюсь, что кто-то здесь может предоставить более систематизированный отчет о лучшем на данный момент способе создания подкласса pandas.DataFrame, который удовлетворяет двум общим требованиям:
- вызов стандартных методов DataFrame в экземплярах MyDF должны создаваться экземпляры MyDF
- вызов стандартных методов DataFrame в экземплярах MyDF должен оставить все атрибуты прикрепленными к выходным данным
Код для создания подкласса pd.DataFrame:
import numpy as np
import pandas as pd
class MyDF(pd.DataFrame):
# how to subclass pandas DataFrame?
pass
mydf = MyDF(np.random.randn(3,4), columns=['A','B','C','D'])
print(type(mydf)) #
# Requirement 1: Instances of MyDF, when calling standard methods of DataFrame,
# should produce instances of MyDF.
mydf_sub = mydf[['A','C']]
print(type(mydf_sub)) #
# Requirement 2: Attributes attached to instances of MyDF, when calling standard
# methods of DataFrame, should still attach to the output.
mydf.myattr = 1
mydf_cp1 = MyDF(mydf)
mydf_cp2 = mydf.copy()
print(hasattr(mydf_cp1, 'myattr')) # False
print(hasattr(mydf_cp2, 'myattr')) # False
Подробнее здесь: https://stackoverflow.com/questions/221 ... -dataframe