Pandas - 获取每日和每月的平均值

问题描述 投票:0回答:1

我有一个这种格式的 Pandas 数据框:

    record_date val
0   2019-01-01  0.417022
1   2019-02-01  0.720324
2   2019-03-01  0.000114
3   2019-04-01  0.302333
4   2019-05-01  0.146756
5   2019-06-01  0.092339
6   2019-07-01  0.186260
7   2019-08-01  0.345561
8   2019-09-01  0.396767
9   2019-10-01  0.538817

如何添加新列 daily_average_val,其中包含历年 val 列的月份和日期组合的平均值?

对于 2024 年 1 月 1 日,我想要数据框中所有 1 月 1 日的平均值
对于 2025 年 1 月 1 日,我想要数据框中所有 1 月 1 日的平均值(与 1-1-2019、1-1-2020、1-1-2021 相同)
对于 2025 年 2 月 1 日,我想要数据框中所有 2 月 1 日的平均值

pandas time-series
1个回答
0
投票

设置自定义石斑鱼并

groupby.transform
:

df['daily_average_val'] = (df.groupby(pd.to_datetime(df['record_date'])
                                        .dt.strftime('%m-%d'))
                             ['val'].transform('mean')
                          )

输出:

  record_date       val  daily_average_val
0  2019-01-01  0.417022           0.417022
1  2019-02-01  0.720324           0.720324
2  2019-03-01  0.000114           0.000114
3  2019-04-01  0.302333           0.302333
4  2019-05-01  0.146756           0.146756
5  2019-06-01  0.092339           0.092339
6  2019-07-01  0.186260           0.186260
7  2019-08-01  0.345561           0.345561
8  2019-09-01  0.396767           0.396767
9  2019-10-01  0.538817           0.538817
© www.soinside.com 2019 - 2024. All rights reserved.