以下是一个示例代码,展示如何按组进行指数加权函数:
import pandas as pd
# 创建示例数据
data = {'group': ['A', 'A', 'A', 'B', 'B', 'B'],
'value': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
# 定义指数加权函数
def exponential_weighted_mean(group):
weights = pd.Series(range(len(group)), index=group.index)
weights = weights.apply(lambda x: 0.5 ** x) # 使用指数加权公式
return (group * weights).sum() / weights.sum()
# 按组应用指数加权函数
result = df.groupby('group')['value'].apply(exponential_weighted_mean)
print(result)
输出结果如下:
group
A 2.333333
B 5.333333
Name: value, dtype: float64
以上代码中,首先创建了一个包含组和值的DataFrame。接下来,定义了一个指数加权函数exponential_weighted_mean
,该函数接受一个组作为输入,根据指数加权公式计算加权平均值。然后,使用groupby
方法将数据按组分组,并应用指数加权函数。最后,输出每个组的加权平均值结果。
上一篇:按组进行条件子集
下一篇:按组计数并分配给新变量