Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas:将datetime时间戳转换为是否';是白天还是晚上?_Python_Pandas_Data Analysis_Python Datetime - Fatal编程技术网

Python Pandas:将datetime时间戳转换为是否';是白天还是晚上?

Python Pandas:将datetime时间戳转换为是否';是白天还是晚上?,python,pandas,data-analysis,python-datetime,Python,Pandas,Data Analysis,Python Datetime,我试图根据时间戳列表来确定这是白天还是晚上。如果我只检查早上7:00到下午6:00之间的时间,将其归类为“白天”,否则归类为“夜晚”,是否正确?就像我在下面的代码中所做的那样。我不确定这一点,因为有时白天甚至在下午6点之后,那么使用python区分白天和夜晚的准确方法是什么 sample data: (timezone= utc/zulutime) timestamps = ['2015-03-25 21:15:00', '2015-06-27 18:24:00', '2015-06-2

我试图根据时间戳列表来确定这是白天还是晚上。如果我只检查早上7:00到下午6:00之间的时间,将其归类为“白天”,否则归类为“夜晚”,是否正确?就像我在下面的代码中所做的那样。我不确定这一点,因为有时白天甚至在下午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
示例数据:(时区=utc/ZulTime)
时间戳=['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']
代码:
对于时间戳中的时间戳:
时间=datetime.datetime.strtime(时间戳,%Y-%m-%d%H:%m:%S)
hr,mi=(time.hour,time.minute)

如果hr>=7且hr不幸的是,python的
时间戳
无法确定是白天还是晚上。这也是因为它取决于你所处的位置以及你如何准确定义白天和黑夜。恐怕您必须为此获取辅助数据。

您可以用于此任务。这是一个

用于执行高精度天文计算的Python包

您可以设置所需的位置并获得太阳高度。夜晚有多种定义,这取决于它是民用(-6°)、航海(-12°)还是天文(-18°)。只要选一个树梢:如果太阳在下面,那就是夜间了

#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 times api。它包括日落和日出的确切时间。但是,您仍然需要位置坐标来获取数据。现在它是免费的。

所以你在问python是否有办法在不使用额外数据的情况下确定每个时间戳是白天还是晚上?是的,因为我没有任何其他数据来确定时间戳,所以只能确定时间戳。你能假设“有时甚至在下午6点之后”的条件在地球上的什么地方确定吗?结果是位置相关的。相当肯定的是,世界上有些地方的光线有效照射时间超过20小时……这取决于你想如何使用这些词。你的意思是太阳是否在给定的位置超出地平线?那么它取决于纬度。比较冬至时的北极和南极。一个主要是白天,另一个主要是夜晚。最后一行打印
print(current_sun\u alt*180/math.pi)
我如何用它来表示白天或黑夜?Eric Duminil在上面解释道:“夜晚有多种定义,这取决于它是民用(-6°)、航海(-12°)还是天文(-18°)目的。只要选一棵树就行了:如果太阳在下面,那就是夜间了!”