熊猫每月重采样维持第一个日期

时间:2020-06-29 14:35:56

标签: python pandas dataframe resampling

在将时间序列重新采样为每月序列时,pandas会从每月的月初开始更改我的时间序列的初始日期。发件人:

2020-01-12    0.730439  
2020-01-13    0.559328    
                ...    
2021-06-29    0.188461  
2021-06-30    0.750668

收件人:

2020-01-01     8.613978
2020-02-01    14.614601
   ...              ...
2021-05-01    11.936765
2021-06-01    13.758198

不是期望的结果,而是在第一个月份的日期是我的时间序列的第一个日期:

2020-01-12     8.613978
2020-02-01    14.614601
   ...              ...
2021-05-01    11.936765
2021-06-01    13.758198

是否可以在不丢失初始日期的情况下进行每月重新采样?

目前,我会在之后进行更正。我问是否有一种动态的方法。我尝试使用所有resample的参数均未达到期望的结果。我看过pd.Grouper,但也没有成功。

谢谢你, 贡索

PS:复制问题的小脚本。

import pandas as pd
from numpy.random import random

index = pd.date_range('20200112', '20210630')
df = pd.Series(random(len(index)), index=index)

df.resample('MS').sum()

2 个答案:

答案 0 :(得分:2)

您可以进行手动更新:

s = df.resample('MS').sum()

s.index = [df.index.min()] + list(s.index[1:])

输出:

2020-01-12     7.345615
2020-02-01    15.873136
2020-03-01    14.083565
2020-04-01    17.547765
2020-05-01    15.321236
2020-06-01    11.787999
2020-07-01    16.619211
2020-08-01    17.292133
2020-09-01    16.866571
2020-10-01    17.772687
2020-11-01    13.371602
2020-12-01    17.037126
2021-01-01    15.907105
2021-02-01    13.887159
2021-03-01    13.660123
2021-04-01    16.534306
2021-05-01    15.055836
2021-06-01    15.818617
dtype: float64

答案 1 :(得分:0)

尝试一下: df = df.close.resample('M')。sum()

或者,您可以在代码中将“ MS”更改为“ M”。