gpt4 book ai didi

Python-pandas - 日期时间索引 : What is the mosty pythonic strategy to analyse rolling with steps? (例如每天的某些时间)

转载 作者:行者123 更新时间:2023-12-01 00:41:35 25 4
gpt4 key购买 nike

我正在处理一个数据框,其中包含跨越几年的每小时温度数据的 DateTimeIndex。我想添加一列,其中包含一天 20:00 到第二天 8:00 之间的最低温度。白天温度(8:00 至 20:00)不重要。结果可以采用与原始数据相同的每小时分辨率,也可以按天重新采样。

我研究了多种策略来解决这个问题,但不确定最有效的(主要编码效率和次要计算效率)分别是Python式的方法来做到这一点。我想到的一些可能性:

  1. 根据 df.index.hour 附加带有“day”、“night”标签的列,并使用 group_bydf.loc找到最小值
  2. 重新采样到 12 小时并删除每秒的值。不知道如何使重采样周期从 20:00 开始。
  3. 添加多索引 - 我想这与方法 1 类似,但对于我想要实现的目标来说感觉有点过分了。
  4. 使用 df. Between_time ( https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.between_time.html#pandas.DataFrame.between_time ),但我不确定日期在午夜更改是否会让事情变得有点困惑。
  5. 最后有一些关于将滚动与步进参数结合起来作为新的 pandas 功能的讨论:https://github.com/pandas-dev/pandas/issues/15354

原始 df 看起来像这样:

datetime                 temp
2009-07-01 01:00:00 17.16
2009-07-01 02:00:00 16.64
2009-07-01 03:00:00 16.21 #<-- minimum for the night 2009-06-30 (previous date since periods starts 2009-06-30 20:00)
... ...
2019-06-24 22:00:00 14.03 #<-- minimum for the night 2019-06-24
2019-06-24 23:00:00 18.87
2019-06-25 00:00:00 17.85
2019-06-25 01:00:00 17.25

我想要得到这样的东西(从一天 20:00 到一天+1 8:00 的最低温度):

datetime                 temp
2009-06-30 23:00:00 16.21
2009-07-01 00:00:00 16.21
2009-07-01 01:00:00 16.21
2009-07-01 02:00:00 16.21
2009-07-01 03:00:00 16.21
... ...
2019-06-24 22:00:00 14.03
2019-06-24 23:00:00 14.03
2019-06-25 00:00:00 14.03
2019-06-25 01:00:00 14.03

或更简洁一点:

datetime    temp
2009-06-30 16.21
... ...
2019-06-24 14.03

最佳答案

使用base选项重新采样:

rs = df.resample('12h', base=8).min()

然后仅保留 20:00 的行:

rs[rs.index.hour == 20]

关于Python-pandas - 日期时间索引 : What is the mosty pythonic strategy to analyse rolling with steps? (例如每天的某些时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57309209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com