【问题标题】:How to resample a timeseries of dataframe according to the actual timestamp?如何根据实际时间戳重新采样数据帧的时间序列?
【发布时间】:2020-03-24 09:24:19
【问题描述】:

我有一个像这样的数据框'a',

[In]  a
[Out]
                  0
date               
2014-01-28  10.1956
2014-01-29  10.6456
2014-01-30  10.4350
2014-02-07  10.8275
2014-02-10  10.9806
2014-02-11  10.9711
2014-02-12  10.8849
2014-02-13  10.3967
2014-02-14  10.5211
2014-02-17  10.7700
2014-02-18  10.5211
2014-02-19  10.9232
2014-02-20  10.5594
2014-02-21  10.3679
2014-02-24  10.5115
2014-02-25  10.2339
2014-02-26  10.1286
2014-02-27   9.9371
2014-02-28  10.2914
2014-03-03  10.4732
2014-03-04  10.3201
2014-03-05  10.3296

如果我使用 resample 来收集每个月的最后一天,结果是:

[In]  a.resample('M').last() 
[Out]
                  0
date    
2014-01-31  10.4350
2014-02-28  10.2914
2014-03-31  10.3296

如您所见,原始索引中没有“2014-01-31”和“2014-03-31”。我只想保留原始索引中每个月的最后一个日期。结果应该是:

                  0
date    
2014-01-30  10.4350
2014-02-28  10.2914
2014-03-05  10.3296

我怎样才能得到这样的结果?顺便说一句,我在重采样中使用了“BM”并得到了相同的结果。

【问题讨论】:

    标签: python pandas dataframe timestamp


    【解决方案1】:

    将索引转换为列,将resample 中的on 参数与last 一起使用,最后通过date 列重新分配索引:

    df = a.reset_index().resample('M', on='date').last().set_index('date')
    print (df)
                      0
    date               
    2014-01-30  10.4350
    2014-02-28  10.2914
    2014-03-05  10.3296
    

    【讨论】:

    • 天啊...我试过了,但得到的答案不正确。谢谢!
    • @xiaoluohao - 你能说得更具体点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 2021-12-31
    • 2020-12-28
    • 2022-11-27
    相关资源
    最近更新 更多