【问题标题】:Timeseries - group data by specific time period slicesTimeseries - 按特定时间段对数据进行分组
【发布时间】:2022-12-05 02:28:01
【问题描述】:

我正在使用一个 csv 文件,该文件具有 13 年价值 5m 时间间隔的数据集。

我正在尝试将此数据集的各个部分划分为特定时间段。

例子

time_period = (df['time'] >= '01:00:00') & (df['time']<='5:00:00')
time_period_df = df.loc[time_period]

我希望这个时间段内只包含 1-5 之间的时间输出,但是,我在输出中得到了所有 24 小时

我希望输出仅打印 1:00:00 和 5:00:00 之间的时间(包括 1:00:00 和 5:00:00)。

【问题讨论】:

    标签: python pandas group-by time-series python-datetime


    【解决方案1】:

    看起来您正在使用比较运算符 >= 和 <= 来尝试指定要包含在时间段数据框中的时间范围。但是,这些比较运算符不会像您在时间列中的字符串值那样按预期工作。您可以使用 str.slice() 方法提取时间字符串的小时部分,然后对这些数值使用比较运算符来指定您的时间范围,而不是使用这些运算符。

    这是您如何执行此操作的示例:

    # First, extract the hour portion of the time strings
    df['hour'] = df['time'].str.slice(0, 2)
    
    # Next, create a boolean mask using the comparison operators on the 'hour' column
    time_period = (df['hour'] >= '01') & (df['hour'] <= '05')
    
    # Finally, use this boolean mask to create your time period dataframe
    time_period_df = df.loc[time_period]
    

    这应该为您提供一个数据框,其中仅包含时间值介于 1:00:00 和 5:00:00 之间的行。

    请注意,此解决方案假定时间列中的时间字符串采用“HH:MM:SS”格式。如果时间字符串的格式不同,则需要相应地调整 str.slice() 调用。

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2019-09-07
      • 2021-12-14
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      相关资源
      最近更新 更多