【问题标题】:python: How to get a maximum aggregate value from a time step within a day?python:如何从一天内的时间步长中获取最大聚合值?
【发布时间】:2020-09-02 21:22:47
【问题描述】:

我是 python 新手,我正在尝试将此代码从另一种语言转换。而且我不知道是否有一种简单的方法可以解决我的问题并避免冗长的处理时间。

关于问题

我有一个包含 2 列(时间,每 30 分钟;和一个值)的数据框,试图从每天的特定时间步长中找到最大聚合值。

关于时间,它们已经是一种积累。例如,'2019-03-28 04:00:00',表示从 03:31:00 到 04:00:00 的累积。

因此,例如,对于等于 2 小时的时间步,我可能会在 2019 年 3 月 28 日找到从 04:00:00 到 05:30:00 (=80.0) 的最大值,但它可能发生在一组不同的数据中。

      Time                Value
2019-03-28 00:30:00        10.0 
2019-03-28 01:00:00         5.0
2019-03-28 01:30:00         0.0
2019-03-28 02:00:00        15.0
2019-03-28 02:30:00         2.0
2019-03-28 03:00:00         0.0
2019-03-28 03:30:00         0.0
2019-03-28 04:00:00        10.0  *
2019-03-28 04:30:00         0.0  *
2019-03-28 05:00:00        10.0  *
2019-03-28 05:30:00        60.0  *
2019-03-28 06:00:00         0.0
........
........
2019-03-28 23:30:00         0.0
........
........

编辑 有没有一种简单的方法可以自动找到每天累计 2 小时的最大值?

【问题讨论】:

  • 您的样本数据只有一天
  • 很抱歉。只花了一天,因为我认为这很容易在一天后复制到其他人

标签: python pandas datetime aggregate


【解决方案1】:

使用.resample()

# Import and initialise pacakages in session: 
import pandas as pd

# Coerce Time to datetime: Time => Date Vector
df['Time'] = pd.to_datetime(df['Time'])

# Replace index with date vec: index => Time
df.set_index(df['Time'], inplace=True)

# Resample to get the daily max: stdout => aggregated Series
df.resample('D').max()

【讨论】:

    【解决方案2】:

    请尝试以下操作。如果不起作用,请告诉我们,我们将进一步提供帮助

    df['Time']=pd.to_datetime(df['Time'])#Coerce Time to datetime
    df.set_index(df['Time'], inplace=True)#Set time as the index
    df.groupby(df.index.date)['Value'].max().to_frame()#groupby date. Can also substitute date for day
    

    【讨论】:

    • 接近我想要的。使用此代码,它会在 30 分钟内获得最大值,然后返回 60。我要查找的是 2 小时内观察到的最大值。因此,它应该从 04:00:00 到 05:30:00 累计,对于这个特定的日子,并返回等于 80 的值。
    • 这不是您最初想要的。所以你改变了问题?试试 df.rolling('2H')['Value'].sum().max()。即便如此,我也不清楚你真正需要什么。基本上,只是使用滚动窗口。我的建议是,你会得到新的术语,阅读它并学习教程。你会学得更快。
    • 感谢您的帮助。我使用另一个问题的想法来累积值 https://stackoverflow.com/questions/42308197/python-pandas-find-consecutive-group-with-max-aggregate-values 。然后,按照您的建议,使用 groupby 应用该功能。
    • 要走的路。继续编码
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多