我是 R 用户,现在也在从头开始学习 Python。
我有这个示例数据框。
我想按名称和 Fiscal_year 对 df 进行分组,然后添加销售额总和以及每个会计年度每种产品的月平均销售额。
均值函数将销售总额除以天数,但我希望销售总额除以不同的月份数。
下面是我正在寻找的输出。
任何帮助将不胜感激。
谢谢你。
我尝试了以下方法
df1 = df.groupby(['Name', 'Fiscal_Year'], as_index=False)
df1 = df1.agg(Total_Sales = ('sale', 'sum'), Mavg = ('Sale', 'mean'))
df
我还尝试了多种算术方法,例如: df['Mavg] = df['销售'].sum()/df['月份].nunique()
这可能可以单独工作,但我不能将其应用于分组。
可重复输入:
df = pd.DataFrame( {
'Name': ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'],
'day': [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
'month': ['Apr', 'Apr', 'Apr', 'Apr', 'May', 'May', 'May', 'May', 'Apr', 'Apr', 'Apr', 'Apr', 'May', 'May', 'May', 'May'],
'Fiscal_Year': ['FY2023-24', 'FY2023-24', 'FY2024-25', 'FY2024-25', 'FY2023-24', 'FY2023-24', 'FY2024-25', 'FY2024-25',
'FY2023-24', 'FY2023-24', 'FY2024-25', 'FY2024-25', 'FY2023-24', 'FY2023-24', 'FY2024-25', 'FY2024-25'],
'sale': [100, 222, 333, 444, 200, 111, 555, 366, 666, 777, 300, 555, 756, 896, 452, 365]
})
您首先需要聚合包括月份来计算每月总和,然后执行聚合:
out = (df
.groupby(['Name', 'month', 'Fiscal_Year'], as_index=False)['sale'].sum()
.groupby(['Name', 'Fiscal_Year'], as_index=False)
.agg(Total_Sales = ('sale', 'sum'), Mavg = ('sale', 'mean'))
)
输出:
Name Fiscal_Year Total_Sales Mavg
0 a FY2023-24 633 316.5
1 a FY2024-25 1698 849.0
2 b FY2023-24 3095 1547.5
3 b FY2024-25 1672 836.0