【问题标题】:Pandas monthly resample maintaining first date熊猫每月重新采样保持第一次约会
【发布时间】:2020-10-19 18:07:51
【问题描述】:

当将时间序列重新采样为月度序列时,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()

【问题讨论】:

    标签: python pandas dataframe resampling


    【解决方案1】:

    试试这个: df= df.close.resample('M').sum()

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

    【讨论】:

    • 嗨 Prafya,谢谢你的回答。 “M”将提供所有月份的月底。它也不会保留所需的日期,而是放置月底。
    【解决方案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
    

    【讨论】:

    • 感谢您的回答。它比我目前所做的更干净。但我在问是否有一种方法可以使用 resample 本身或其他方法,如 groupby,或使用 Goruper。
    猜你喜欢
    • 2018-04-25
    • 2019-01-16
    • 2019-02-28
    • 1970-01-01
    • 2021-06-01
    • 2021-08-04
    • 1970-01-01
    • 2020-08-18
    • 2022-06-10
    相关资源
    最近更新 更多