REGR: DataFrame.from_records for subclasses no longer calls subclass constructor · Issue #57008 · pandas-dev/pandas (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

@jorisvandenbossche

Description

@jorisvandenbossche

Example

In [16]: from pandas.tests.frame.test_subclass import MySubclassWithMetadata

In [17]: df = MySubclassWithMetadata.from_records([{'a': 1, 'b': 2}])

In [18]: type(df)
Out[18]: pandas.tests.frame.test_subclass.MySubclassWithMetadata

In [19]: df.my_metadata
...
AttributeError: 'MySubclassWithMetadata' object has no attribute 'my_metadata'

With pandas 2.1.4, this works fine.

The reason for this is because from_records was updated (#52419) to use

return cls._from_mgr(mgr, axes=mgr.axes)

instead of cls(mgr) for the final dataframe construction.

I think this should probably at least use _constructor_from_mgr instead of _from_mgr (and maybe even still call the class? because in this case there is not finalize that can be called to finalize the initialization)