Pandas:将数据时间的时间戳转换为白天或夜晚?[英] Pandas: convert datetime timestamp to whether it's day or night?

本文是小编为大家收集整理的关于Pandas:将数据时间的时间戳转换为白天或夜晚?的处理方法,想解了Pandas:将数据时间的时间戳转换为白天或夜晚?的问题怎么解决?Pandas:将数据时间的时间戳转换为白天或夜晚?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我试图根据时间列表来确定它的白天或晚上.如果我只检查上午7:00至6:00 pm之间的小时将其归类为" Day",否则"夜晚"会是正确的吗?就像我在以下代码中所做的那样.我不确定这是因为有时甚至在下午6点之后的一天,所以使用Python在白天或晚上之间有什么准确的方法?

sample data: (timezone= utc/zulutime)
    timestamps = ['2015-03-25 21:15:00', '2015-06-27 18:24:00', '2015-06-27 18:22:00', '2015-06-27 18:21:00', '2015-07-07 07:53:00']

Code:  
    for timestamp in timestamps:
        time = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
        hr, mi = (time.hour, time.minute)
        if hr>=7 and hr<18: print ("daylight")
        else: print ("evening or night")

sample output:
evening or night
evening or night
evening or night
evening or night
daylight

推荐答案

您可以使用 pyephem 进行此任务.这是一个

用于执行高精度天文学计算的Python软件包.

您可以设置所需的位置并获得太阳高度.夜晚有多个定义,具体取决于是否用于民用(-6°),航海(-12°)或天文学(-18°).只需选择一个treshold:如果太阳在下面,那就是夜间!

#encoding: utf8
import ephem
import math
import datetime

sun = ephem.Sun()
observer = ephem.Observer()
# ↓ Define your coordinates here ↓
observer.lat, observer.lon, observer.elevation = '48.730302', '9.149483', 400
# ↓ Set the time (UTC) here ↓
observer.date = datetime.datetime.utcnow()
sun.compute(observer)
current_sun_alt = sun.alt
print(current_sun_alt*180/math.pi)
# -16.8798870431°

其他推荐答案

作为解决方法,穆斯林有免费的ADHAN时代的免费API.它完全包括日落和日出时间.但是,您仍然需要位置坐标来获取数据.目前是免费的.

其他推荐答案

不幸的是,Python的timestamp无法确定是白天还是晚上.这也是因为这取决于您所在的位置以及您如何确切地定义白天和黑夜.恐怕您将不得不为此获得辅助数据.

本文地址:https://www.itbaoku.cn/post/1727834.html