Hi all,

I saw this behaviour and I don't know if this is a bug or feature. I don't have much experience with directly inheriting from pandas.DataFrame as I've always preferred aggregation rather than inheritance there. A working sample is pasted below. Notice how df.astype(dtypes) changes the type to pandas.DataFrame. Any suggestions if this is intended behaviour?


import pandas as pd

class DF(pd.DataFrame):
    @property
    def _constructor(self):
        return self.__class__


df = DF({
    'A': [1,2,3],
    'B': [10,20,30],
    'C': [100,200,300],
})  # Type is DF


a = df['A'] # type is Series
ab = df[['A', 'B']] # type is DF

dtypes = {'A': 'float64', 'B': 'float64', 'C': 'float64'}
x = df.astype(dtypes)

type(x)  # type is pd.DataFrame

Regards,
Simeon