当apply函数返回一个系列时,我很好奇pandas groupby-apply的行为.
当系列具有不同的长度时,它返回一个多索引系列.
In [1]: import pandas as pd
In [2]: df1=pd.DataFrame({'state':list("AABBB"),
...: 'city':list("vwxyz")})
In [3]: df1
Out[3]:
city state
0 v A
1 w A
2 x B
3 y B
4 z B
In [4]: def f(x):
...: return pd.Series(x['city'].values,index=range(len(x)))
...:
In [5]: df1.groupby('state').apply(f)
Out[5]:
state
A 0 v
1 w
B 0 x
1 y
2 z
dtype: object
Run Code Online (Sandbox Code Playgroud)
这返回一个Series对象.
但是,如果每个系列都具有相同的长度,那么它将其转换为a DataFrame.
In [6]: df2=pd.DataFrame({'state':list("AAABBB"),
...: 'city':list("uvwxyz")})
In [7]: df2
Out[7]:
city state
0 …Run Code Online (Sandbox Code Playgroud)