我有一个这样的数据框:
需要按分支对数据进行分组,并获取每个分支的总和列的总量。但是除了求和之外,还需要得到每个分支的估计平均值,这就是问题所在。
平均值应计算如下:对于每个组(分支),计算“金额”值与“期限”值的乘积之和,然后除以该组“金额”列中的总和。
通过反复试验,我设法制作了以下工作代码:
import pandas as pd
df = pd.read_csv('df_samp.csv') # ссылка на файл с фрагментом данных внизу
togroup = df[['филиал', 'сумма', 'срок']][df['срок']>90] # группируем только строки где "срок" > 90
togroup['средн'] = np.NaN # добавил столбец для средних значений
grouped = togroup.groupby('филиал').agg(lambda x: int(sum(x.сумма*x.срок)/sum(x.сумма)))[['сумма', 'средн']]
在输出中,我得到以下信息:
问题本身:
- 如何正确组合聚合函数(不确定我的方式是否正确\最佳)?
- 如何让 sum 列有总量,而不是重复平均值(不可能为每一列设置一个函数)?
- 有没有办法不为总数据插入一个空列,而是在分组时动态创建一个?
UPD: csv格式的数据片段


据我了解,您需要根据计算获得两个新列。您可能可以这样做:
那么对于您的示例,结果将是:
当然需要检查。
你可以这样做:
结果: