如何从 Pandas 数据框中的分钟数据中删除每日平均值

How to remove daily mean from minute data in a Pandas dataframe

我有一个带有分钟日期时间索引的 pandas 数据框:

Index Col1
2022-12-25 09:01:00 5
2022-12-25 09:10:00 15
2022-12-25 11:12:00 10
2022-12-26 10:05:00 2
2022-12-26 12:29:00 2
2022-12-26 13:56:00 5

我想从这个数据中删除日平均值,得到这个数据框(这里是第一天 10,第二天 3):

Index Col1
2022-12-25 09:01:00 -5
2022-12-25 09:10:00 5
2022-12-25 11:12:00 0
2022-12-26 10:05:00 -1
2022-12-26 12:29:00 -1
2022-12-26 13:56:00 2

假设 df 是您的数据框,这应该可以解决问题:

for day, df_group in df.groupby(by=df.index.day):
    
    df.loc[df_group.index,"Col1"] -= df_group["Col1"].mean()