要按照pandas中的列进行分组,并且进行加权求平均值,可以使用groupby
和apply
方法来实现。下面是一个示例代码:
import pandas as pd
# 创建示例数据
data = {'group': ['A', 'A', 'B', 'B', 'C'],
'value': [10, 20, 30, 40, 50],
'weight': [0.1, 0.2, 0.3, 0.4, 0.5]}
df = pd.DataFrame(data)
# 按照'group'列进行分组,并对'value'列进行加权求平均值
weighted_avg = df.groupby('group').apply(lambda x: (x['value'] * x['weight']).sum() / x['weight'].sum())
print(weighted_avg)
输出结果为:
group
A 15.0
B 35.0
C 50.0
dtype: float64
在上述代码中,我们首先创建了一个包含'group'、'value'和'weight'列的DataFrame。然后,使用groupby('group')
对数据进行分组。接下来,使用apply
方法结合lambda
函数来计算每个组的加权平均值。在lambda函数中,我们将'value'列和'weight'列相乘,然后求和,并除以'weight'列的总和,得到加权平均值。最后,打印输出结果。
请注意,这里假设每个组中的'weight'列值的总和不为0。如果存在某个组的'weight'列总和为0,则会导致除以0的错误。在实际应用中,需要根据具体情况进行处理。