Pandas 每月重新抽样维护第一个日期
Pandas monthly resample maintaining first date
将时间序列重新采样为月度序列时,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()
您可以进行手动更新:
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
试试这个:
df= df.close.resample('M').sum()
或者,您可以在代码中将 'MS' 更改为 'M'。
将时间序列重新采样为月度序列时,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()
您可以进行手动更新:
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
试试这个: df= df.close.resample('M').sum()
或者,您可以在代码中将 'MS' 更改为 'M'。