Skip to content

API: update Series.apply to follow changes in DataFrame.apply #19866

Open
@jorisvandenbossche

Description

@jorisvandenbossche

As a follow-up to the changes in DataFrame.apply (#18577), we should make sure Series.apply behaves consistently with that as well.

I think the default behaviour is OK (it already did what we now do by default for DataFrame: expand Series, keep lists or arrays as scalars, see below).

But we could in principle also add the same control over the output type by adding a similar result_type keyword.

Current behaviour:

In [42]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])

In [44]: s.apply(lambda x: [1, 2])
Out[44]: 
a    [1, 2]
b    [1, 2]
c    [1, 2]
d    [1, 2]
dtype: object

In [45]: s.apply(lambda x: pd.Series([1, 2]))
Out[45]: 
   0  1
a  1  2
b  1  2
c  1  2
d  1  2

In [46]: s.apply(lambda x: pd.Series([1, 2], index=['A', 'B']))
Out[46]: 
   A  B
a  1  2
b  1  2
c  1  2
d  1  2

In [47]: s.apply(lambda x: np.array([1, 2]))
Out[47]: 
a    [1, 2]
b    [1, 2]
c    [1, 2]
d    [1, 2]
dtype: object

Metadata

Metadata

Assignees

No one assigned

    Labels

    API - ConsistencyInternal Consistency of API/BehaviorApplyApply, Aggregate, Transform, MapEnhancement

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions