python - 您如何隔离白天之间的夜间时段,因为您想要的时段并不都在同一天?
问题描述
我想选择一夜之间的时期。因此,例如,4 月 27 日晚上将从(假设)2017-04-27 18:00 到 2017-04-28 06:30。
我目前正在运行一个 for 循环,该循环从名为 data_input 的 Dataframe 中取出日期
for dates in data_input.index:
我想我想创建一个可以使用以下术语做某事的面具,但我不确定如何将它们结合起来;
data_input.index.date == dates
data_input.index.hour >18
&
data_input.index.date == dates+timedelta(days=1)
data_input.index.hour <6
所以我想我的问题是如何以正确的方式组合这些。
为了 MVE,这里是 data_input 的前 40 行
data_input.head(40)=
2017-04-27 00:30:00 13.94
2017-04-27 01:30:00 14.88
2017-04-27 02:30:00 15.24
2017-04-27 03:30:00 15.94
2017-04-27 04:30:00 16.42
2017-04-27 05:30:00 16.12
2017-04-27 06:30:00 15.61
2017-04-27 07:30:00 14.96
2017-04-27 08:30:00 14.56
2017-04-27 09:30:00 13.86
2017-04-27 10:30:00 13.24
2017-04-27 11:30:00 13.43
2017-04-27 12:30:00 13.43
2017-04-27 13:30:00 13.12
2017-04-27 14:30:00 13.06
2017-04-27 15:30:00 12.99
2017-04-27 16:30:00 12.92
2017-04-27 17:30:00 12.88
2017-04-27 18:30:00 12.74
2017-04-27 19:30:00 12.72
2017-04-27 20:30:00 12.96
2017-04-27 21:30:00 13.18
2017-04-27 22:30:00 13.55
2017-04-27 23:30:00 14.31
2017-04-28 00:30:00 15.14
2017-04-28 01:30:00 15.77
2017-04-28 02:30:00 15.88
2017-04-28 03:30:00 15.92
2017-04-28 04:30:00 16.51
2017-04-28 05:30:00 17.06
2017-04-28 06:30:00 16.99
2017-04-28 07:30:00 16.42
2017-04-28 08:30:00 15.88
2017-04-28 09:30:00 15.34
2017-04-28 10:30:00 14.92
2017-04-28 11:30:00 14.81
2017-04-28 12:30:00 14.60
2017-04-28 13:30:00 14.29
2017-04-28 14:30:00 14.06
Name: Temperature (°C), dtype: float64
解决方案
您可以使用:
for dates in data_input.index:
#remove times (set to 00:00:00)
d = dates.floor('d')
#add timedeltas
today = d + pd.Timedelta(18, unit='h')
tomorrow = d + pd.Timedelta(1, unit='d') + pd.Timedelta(6, unit='h')
#filtering
night_data = data_input.loc[today : tomorrow]
print (night_data)
推荐阅读
- angular - Angular 组件之间的数据流问题
- c++ - 我可以使用 Podofo 或 libHaru 从 PDF 图像文件中获取字节数组吗?
- javascript - 防止 Elementor Multi-Step Form textarea 自动更改为下一步
- flutter - Flutter PaginatedDataTable Future 因链接请求而失败
- graphql - 我的 apollo graphql 订阅用例是否有保证?
- python - 例外:您似乎正试图从广播变量、操作或转换中引用 SparkContext
- java - 未为 Log 类型定义方法 fail(String)
- c# - DinkToPDF pdf 结果与 HTML 不同
- php - 如果在 li 元素中找到类,则将 HTML 添加到字符串部分的开头和结尾
- android - Android Chromecast:ExpandedControlActivity 给出 SQLiteDatabaseException