如何将pd.namedagh替换为符合pandas 0.24.2的代码?
您好,我不得不将Pandas Version降级为“0.24.2” 因此,无法再识别函数pd.namedagh如何将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',
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