pandas Python,如何从每月的15号到15号,或者从第n号到第n号求平均值

5vf7fwbs  于 2023-04-28  发布在  Python
关注(0)|答案(1)|浏览(128)

我有一个pandas数据框,看起来像下面这样,有一个datetime列和一个value列
| 时间戳|价值|
| --------------|--------------|
| 2023年1月1日|一百|
| 2023年1月2日|九十|
| ……||
| 2023年12月12日|八十五|
我知道如何按月分组,但正在寻找更细致入微的东西来计算每月的平均值,但从一个月的15日到下个月的15日,看起来像下面这样
| 时间戳|平均值|
| --------------|--------------|
| 2023年1月15日至2月15日|九十五|
| 2023年2月15日至3月15日|九十三|
| ……||
| 2023年11月15日至12月15日|八十四|
我试着从一个月到另一个月分组,并将时间列移动15,但这并不准确,因为每个月都有不同的天数。

tv6aics1

tv6aics11#

我认为这两种方法都应该起作用:

(df.groupby(df['date'].dt.day.eq(15).cumsum(),as_index=False)
 .agg({'date':lambda x: '{} - {}'.format(*x.dt.strftime('%m/%d/%Y').iloc[[0,-1]].tolist()),
       'value':'mean'}))

(df.groupby((df['date'] - pd.to_timedelta('14D')).dt.to_period('M'),as_index=False)
 .agg({'date':lambda x: '{} - {}'.format(*x.dt.strftime('%m/%d/%Y').iloc[[0,-1]].tolist()),
       'value':'mean'}))

相关问题