作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个数据框,其中包含跨越几年的每小时温度数据的 DateTimeIndex。我想添加一列,其中包含一天 20:00 到第二天 8:00 之间的最低温度。白天温度(8:00 至 20:00)不重要。结果可以采用与原始数据相同的每小时分辨率,也可以按天重新采样。
我研究了多种策略来解决这个问题,但不确定最有效的(主要编码效率和次要计算效率)分别是Python式的方法来做到这一点。我想到的一些可能性:
df.index.hour
附加带有“day”、“night”标签的列,并使用 group_by
或 df.loc
找到最小值df. Between_time
( https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.between_time.html#pandas.DataFrame.between_time ),但我不确定日期在午夜更改是否会让事情变得有点困惑。原始 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/
我是一名优秀的程序员,十分优秀!