我有一个这种格式的 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 日的平均值
设置自定义石斑鱼并
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