【问题标题】:pandas monthly resample 15th day熊猫每月重采样第 15 天
【发布时间】:2018-04-25 01:49:26
【问题描述】:

我正在尝试重新采样到每月值,但相对于第 15 天

我检查了时间序列offsets 文档,但只有

M 月末频率 SM 半月末频率(15 日和月末) MS 月开始频率 SMS半月开始频率(1日和15日)

而我只需要第 15 天

类似

2000-01-15 8.7
2000-02-15 6.9
2000-03-15 15.8
2000-04-15 12.4

我尝试使用 pd.offsets.MonthBegin 和 MonthOffset 没有结果

【问题讨论】:

  • 什么是输入样本数据?
  • 您需要聚合数据还是只过滤15 day 就像df = df[df['date'].dt.day == 15] 一样?
  • 例如每日数据。我试图聚合数据

标签: python pandas resampling


【解决方案1】:

按月份开始MS 聚合,然后通过loffset 参数调整重新采样的时间标签:

df1 = df.resample('MS', loffset=pd.Timedelta(14, 'd')).sum()

示例:

rng = pd.date_range('2017-04-03', periods=15, freq='5D')
df = pd.DataFrame({'a': range(15)}, index=rng)  
print (df)
             a
2017-04-03   0
2017-04-08   1
2017-04-13   2
2017-04-18   3
2017-04-23   4
2017-04-28   5
2017-05-03   6
2017-05-08   7
2017-05-13   8
2017-05-18   9
2017-05-23  10
2017-05-28  11
2017-06-02  12
2017-06-07  13
2017-06-12  14

df1 = df.resample('MS', loffset=pd.Timedelta(14, 'd')).sum()
print (df1)
             a
2017-04-15  15
2017-05-15  51
2017-06-15  39

df1 = df.resample('SMS').sum()
print (df1)
             a
2017-04-01   3
2017-04-15  12
2017-05-01  21
2017-05-15  30
2017-06-01  39

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 2019-02-28
    • 2020-08-18
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多