我们可以在 pandas groupby agg 函数中使用迭代器吗?
Can we use iterables in pandas groupby agg function?
我有一个 pandas groupby 函数。
我有另一个 dict 形式的输入,它具有 {column:aggfunc} 结构,如下所示:
d = {'production': 'sum',
'Demand': 'first'}
我想用这个字典来应用aggregate
函数如下:
df.groupby(['Month']).agg(production=pd.NamedAgg('production', aggfunc='sum'),
demand=pd.NamedAgg('Demand', aggfunc='first'))
有什么方法可以使用输入字典 d
(可能是通过使用字典推导)实现这一点?
如果字典包含列名并将聚合函数传递给 GroupBy.agg
,则列名不会更改:
df = pd.DataFrame({'Month': ['jan', 'jan', 'feb'],
'production':[1,5,9],
'Demand': list('abc')})
d = {'production': 'sum', 'Demand': 'first'}
df = df.groupby(['Month']).agg(d)
print (df)
production Demand
Month
feb 9 c
jan 6 a
如果还需要通过字典中的命名聚合设置新的列名称:
d = {'production123': ('production', 'sum'), 'demand':('Demand', 'first')}
df = df.groupby(['Month']).agg(**d)
print (df)
production123 demand
Month
feb 9 c
jan 6 a
我有一个 pandas groupby 函数。 我有另一个 dict 形式的输入,它具有 {column:aggfunc} 结构,如下所示:
d = {'production': 'sum',
'Demand': 'first'}
我想用这个字典来应用aggregate
函数如下:
df.groupby(['Month']).agg(production=pd.NamedAgg('production', aggfunc='sum'),
demand=pd.NamedAgg('Demand', aggfunc='first'))
有什么方法可以使用输入字典 d
(可能是通过使用字典推导)实现这一点?
如果字典包含列名并将聚合函数传递给 GroupBy.agg
,则列名不会更改:
df = pd.DataFrame({'Month': ['jan', 'jan', 'feb'],
'production':[1,5,9],
'Demand': list('abc')})
d = {'production': 'sum', 'Demand': 'first'}
df = df.groupby(['Month']).agg(d)
print (df)
production Demand
Month
feb 9 c
jan 6 a
如果还需要通过字典中的命名聚合设置新的列名称:
d = {'production123': ('production', 'sum'), 'demand':('Demand', 'first')}
df = df.groupby(['Month']).agg(**d)
print (df)
production123 demand
Month
feb 9 c
jan 6 a