gpt4 book ai didi

python - 具有多个输出列的 Pandas 聚合函数

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:26 26 4
gpt4 key购买 nike

我正在尝试定义一个包含多个 OUTPUT 列的聚合函数,我想按如下方式使用它

df.groupby(by=...).agg(my_aggregation_function_with_multiple_columns)

知道怎么做吗?

我试过类似的东西

def my_aggregation_function_with_multiple_columns(slice_values):
return {'col_1': -1,'col_2': 1}

但这将在逻辑上在单个列中输出字典 {'col_1': -1,'col_2': 1}...

最佳答案

这是不可能的,因为 agg 分别处理所有列 - 首先处理第一列,然后处理第二列......直到最后。

解决方案是 flexible apply如果输出是更多标量,则返回多个输出添加 Series

def my_aggregation_function_with_multiple_columns(slice_values):
return pd.Series([-1, 1], index=['col_1','col_2'])

df.groupby(by=...).apply(my_aggregation_function_with_multiple_columns)

示例:

df = pd.DataFrame(dict(A=[1,1,2,2,3], B=[4,5,6,7,2], C=[1,2,4,6,9]))
print (df)

def my_aggregation_function_with_multiple_columns(slice_values):
#print each group
#print (slice_values)
a = slice_values['B'] + slice_values['C'].shift()
print (type(a))
return a

<class 'pandas.core.series.Series'>
<class 'pandas.core.series.Series'>
<class 'pandas.core.series.Series'>
<class 'pandas.core.series.Series'>

df = df.groupby('A').apply(my_aggregation_function_with_multiple_columns)
print (df)
A
1 0 NaN
1 6.0
2 2 NaN
3 11.0
3 4 NaN
dtype: float64

关于python - 具有多个输出列的 Pandas 聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com