Skip to content

REGR: DataFrame.from_records for subclasses no longer calls subclass constructor #57008

Closed
@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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    RegressionFunctionality that used to work in a prior pandas versionSubclassingSubclassing pandas objects

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions