【问题标题】:Splitting Pandas Dataframe into chunks by Timestamp通过时间戳将 Pandas 数据框拆分为块
【发布时间】:2020-06-19 00:36:01
【问题描述】:

假设我有一个 pandas 数据框 df

DF

Timestamp     Value
Jan 1 12:32   10
Jan 1 12:50   15
Jan 1 13:01   5
Jan 1 16:05   17
Jan 1 16:10   17
Jan 1 16:22   20

我想要返回的结果是具有每小时(或任何用户指定的时间段,实际上)平均值的数据帧。假设我指定的 timesegment 在这里是 1 小时。我想要类似的东西

Jan 1 12:00 12.5
Jan 1 13:00 5
Jan 1 14:00 0
Jan 1 15:00 0
Jan 1 16:00 18

pandas 中是否有一种简单的方法可以像这样进行分割?感觉应该有,但我以各种方式在谷歌上搜索“拆分 pandas 数据框”让我失望了。

【问题讨论】:

    标签: python pandas dataframe split


    【解决方案1】:

    我们需要先转换成日期时间然后再做resample

    df.Timestamp=pd.to_datetime('2020 '+df.Timestamp)
    
    df.set_index('Timestamp').Value.resample('1H').mean().fillna(0)
    Timestamp
    2020-01-01 12:00:00     7.5
    2020-01-01 13:00:00     5.0
    2020-01-01 14:00:00     0.0
    2020-01-01 15:00:00     0.0
    2020-01-01 16:00:00    18.0
    Freq: H, Name: Value, dtype: float64
    

    转换索引

    newdf.index=newdf.index.strftime('%B %d %H:%M')
    newdf
    Timestamp
    January 01 12:00     7.5
    January 01 13:00     5.0
    January 01 14:00     0.0
    January 01 15:00     0.0
    January 01 16:00    18.0
    Name: Value, dtype: float64
    

    【讨论】:

    • 太棒了。谢谢你。既然我已经熟悉了这些选项,我将研究它们。非常感谢。
    • 我能问一下,.Value 那里完成了什么?
    • .Value 这里是选择列进行重采样均值。它也等于 ['Value'] :-)
    • 太好了,感激不尽!
    猜你喜欢
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多