Dataframe聚合方法传递列表问题

问题描述 投票:0回答:1

这可能是一个错误,但你对这个 pandas 功能有何看法:

df = pd.DataFrame(np.arange(20).reshape(10,-1), columns=[*'AB'])

def f(x):
    print(type(x))

df.agg(f)

输出:

<class 'pandas.core.series.Series'>
<class 'pandas.core.series.Series'>
A    None
B    None
dtype: object

但是,如果我将 agg 方法中的函数调用包装在括号中,并将单个函数作为列表传递。

df = pd.DataFrame(np.arange(20).reshape(10,-1), columns=[*'AB'])

def f(x):
    print(type(x))


df.agg([f])

输出:

<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
      A     B
      f     f
0  None  None
1  None  None
2  None  None
3  None  None
4  None  None
5  None  None
6  None  None
7  None  None
8  None  None
9  None  None

所有更改是将自定义函数作为单个值列表传递。

python pandas aggregate
1个回答
0
投票

在您的情况下,您应该考虑使用

apply
而不是
agg
,因为您的函数不执行多个值的聚合。

© www.soinside.com 2019 - 2024. All rights reserved.