如何将pd.namedagh替换为符合pandas 0.24.2的代码?

如何将pd.namedagh替换为符合pandas 0.24.2的代码?,pandas,numpy,aggregate-functions,Pandas,Numpy,Aggregate Functions,您好,我不得不将Pandas Version降级为“0.24.2” 因此,无法再识别函数pd.namedagh import pandas as pd import numpy as np agg_cols = ['A', 'B', 'C'] agg_df = df.groupby(agg_cols).agg( max_foo=pd.NamedAgg(column='Foo', aggfunc=np.max), min_foo=pd.NamedAgg(column='Foo',

您好,我不得不将Pandas Version降级为“0.24.2”

因此,无法再识别函数pd.namedagh

import pandas as pd
import numpy as np

agg_cols = ['A', 'B', 'C']
agg_df = df.groupby(agg_cols).agg(
    max_foo=pd.NamedAgg(column='Foo', aggfunc=np.max),
    min_foo=pd.NamedAgg(column='Foo', aggfunc=np.min)
).reset_index()
你能帮我修改我的代码,使其与版本0.24.2兼容吗

非常感谢。

示例:

agg_df = df.groupby(agg_cols)['Foo'].agg(
    [('max_foo', np.max),('min_foo', np.min)]
).reset_index()



df = pd.DataFrame({
        'A':list('a')*6,
         'B':[4,5,4,5,5,4],
         'C':[7]*6,
         'Foo':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
         'F':list('aaabbb')
})

agg_cols = ['A', 'B', 'C']
agg_df = df.groupby(agg_cols).agg(
    max_foo=pd.NamedAgg(column='Foo', aggfunc=np.max),
    min_foo=pd.NamedAgg(column='Foo', aggfunc=np.min)
).reset_index()
print (agg_df)
   A  B  C  max_foo  min_foo
0  a  4  7        5        0
1  a  5  7        7        1
因为只有一列
Foo
用于处理,所以在
groupby
之后添加列
Foo
,并使用聚合函数传递具有新列名称的元组:

agg_df = df.groupby(agg_cols)['Foo'].agg(
    [('max_foo', np.max),('min_foo', np.min)]
).reset_index()
print (agg_df)
   A  B  C  max_foo  min_foo
0  a  4  7        5        0
1  a  5  7        7        1
agg_df = df.groupby(agg_cols).agg({'Foo':['max', 'min']})
agg_df.columns = [f'{b}_{a}' for a, b in agg_df.columns]
agg_df = agg_df.reset_index()
print (agg_df)
   A  B  C  max_foo  min_foo
0  a  4  7        5        0
1  a  5  7        7        1
另一个想法是聚合函数列表的传递字典:

agg_df = df.groupby(agg_cols)['Foo'].agg(
    [('max_foo', np.max),('min_foo', np.min)]
).reset_index()
print (agg_df)
   A  B  C  max_foo  min_foo
0  a  4  7        5        0
1  a  5  7        7        1
agg_df = df.groupby(agg_cols).agg({'Foo':['max', 'min']})
agg_df.columns = [f'{b}_{a}' for a, b in agg_df.columns]
agg_df = agg_df.reset_index()
print (agg_df)
   A  B  C  max_foo  min_foo
0  a  4  7        5        0
1  a  5  7        7        1