【问题标题】:Resample Dataframe Using Exact Start Period使用确切的开始周期重新采样数据框
【发布时间】:2017-11-01 08:23:31
【问题描述】:

考虑如下所示的数据框:

time
18:00:00.051563    2575.50
18:00:01.023444    2575.50
18:00:02.000000    2575.50
18:00:03.000000    2575.50
18:00:04.000000    2575.50
18:00:05.000000    2575.50
18:00:06.000000    2575.50
18:00:07.000000    2575.50

我想以 2 秒为间隔重新采样,开始间隔为 18:00:00.000000。但由于我系列中的第一个数据点是18:00:00.051563,因此生成的存储桶也从00.051563 开始,而不是00.00000

df.resample('2S', closed='left', label='left', base=0).mean()

time
18:00:00.051563    2575.317742
18:00:02.051563    2575.427632
18:00:04.051563    2575.674342
18:00:06.051563    2575.902778
18:00:08.051563    2576.287037
18:00:10.051563    2576.392857
18:00:12.051563    2576.416667
18:00:14.051563    2576.164286
18:00:16.051563    2576.100000

【问题讨论】:

  • 我无法重现该问题。我从 18:00:00 开始获取索引。版本0.20.3
  • @piRSquared 你能发布你的代码吗?
  • from pandas import Timestamp; pd.Series({Timestamp('2017-10-31 18:00:00.051563'): 2575.5, Timestamp('2017-10-31 18:00:01.023444'): 2575.5, Timestamp('2017-10-31 18:00:02'): 2575.5, Timestamp('2017-10-31 18:00:03'): 2575.5, Timestamp('2017-10-31 18:00:04'): 2575.5, Timestamp('2017-10-31 18:00:05'): 2575.5, Timestamp('2017-10-31 18:00:06'): 2575.5, Timestamp('2017-10-31 18:00:07'): 2575.5}).resample('2S').mean()
  • @piRSquared 这帮助我找到了答案。谢谢!

标签: python pandas


【解决方案1】:

意识到@piRSquared 的代码按预期工作我重新检查了数据管道并意识到我的time 列类型是TimedeltaIndex,这就是导致重新采样中出现意外行为的原因。

TimedeltaIndex 源于对时间字符串的隐式转换。

如果您的问题与我的类似,这可能会对您有所帮助:

df['datetime'] = pd.to_datetime(df['date'] + df['time'])

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2019-09-30
    • 2020-10-18
    • 1970-01-01
    • 2019-04-15
    相关资源
    最近更新 更多