12月至1月期间的年平均日数
想象一个时间序列,在12月初/1月初周围循环达到顶峰.然后,该系列的最大值将具有如下dt1或dt2中显示的日期.我需要计算这些最大值的一年中的平均一天(doy). 问题在于,普通平均值将给出dt1(211)和dt2(356)的结果截然不同.原因显然是dt1的某些元素在一月,因此相应的doys很小,并使结果平均降低. 我最初使用另一个月作为计算DOY的来源来进行此操作,但这在新来源周围引起了其他时间序列的峰值. 是否有一般的全年解决这个问题的解决方案? dt1 = [datetime(2000, 12, 15), datetime(2001, 12, 16), datetime(2002,12,20), datetime(2004,1,2) , datetime(2005,1,1)] dt2 = [datetime(2000, 12, 15), datetime(2001, 12, 16), datetime(2002,12,20), datetime(2003,1
10 2024-03-21
编程技术问答社区
如何在pyspark中把日期时间从字符串格式转换成日期时间格式?
我使用sqlcontext创建了一个数据框,并且我对DateTime格式有问题,因为它被识别为字符串. df2 = sqlContext.createDataFrame(i[1]) df2.show df2.printSchema() 结果: 2016-07-05T17:42:55.238544+0900 2016-07-05T17:17:38.842567+0900 2016-06-16T19:54:09.546626+0900 2016-07-05T17:27:29.227750+0900 2016-07-05T18:44:12.319332+0900 string (nullable = true) 由于DateTime模式是字符串,我想将其更改为DateTime格式,如下所示: df3 = df2.withColumn('_1', df2['_1'].cast(datetime())) 在这里我有一个错误: TypeError:必需的参数"年"(
20 2024-03-01
编程技术问答社区
如何循环使用一个函数,每 15 分钟(0/15/30/45 分钟)执行一次任务?
我有一个在覆盆子PI上运行的程序,我想每15分钟从0、15、30和45分钟以后每15分钟从温度计中获取一些数据. 我已经使用了一段时间的循环尝试了一下,我以前使用了时间.Sleep(900),但有时会偏离小时的0、15、30和45分钟. 目前我有这个; from datetime import datetime def run(condition): while condition == True: if (datetime.now().minute == (0 or 15 or 30 or 45)): #perform some task temperature_store() 为了简单起见,我尚未进入温度_store(),但它会从插入PI中的传感器中读取温度,然后将其打印. 我希望温度_store()每15分钟发生一次,但是目前,每秒都会发生. 我知道这可能是因为我有错误的逻辑/语法,
16 2023-12-03
编程技术问答社区
如何在Python中要求时间戳在验证过程中被填充为零?
我正在试图验证一个应该包含 iso 8601 (通常在JSON中使用). python's strptime在验证零盖时似乎非常宽容,请参见下面的代码示例(请注意,小时缺少领先的零): >>> import datetime >>> s = '1985-08-23T3:00:00.000' >>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%f') datetime.datetime(1985, 8, 23, 3, 0) 例如 是否有任何方法可以强制实施验证其零填充的方法?或者在Python的标准Libs中是否有其他内置功能? 我想避免为此写自己的regexp. 解决方案 There is already an answer that parsing ISO8601 or RFC3339 date/time with Python strptime() is impossible: 如何解析ISO 8
6 2023-11-12
编程技术问答社区
将UTC时区转换为IST的python
以下代码行给我 utc 生产服务器上的时间. timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 在 解决方案 from datetime import datetime import pytz tz_NY = pytz.timezone('Asia/Kolkata') datetime_NY = datetime.now(tz_NY) print("India time:", datetime_NY.strftime("%Y-%m-%d %H:%M:%S.%f")) >>India time: 2021-05-03 12:25:21.877976 其他解决方案 datetime.now()为您提供一个天真的dateTime对象,根据您在上运行脚本的机器的设置来表示本地时间(在这种情况下,恰好是UTC ,因为它是服务器).请参阅要在特定时区中获
18 2023-11-11
编程技术问答社区
如何将包含BST(英国夏时制)的时间戳字符串解析为可感知时区的日期时间戳?
我有格式的时间戳" 25-OCT-20 1:00:00 AM GMT"和" 25-OCT-20:00:00 AM BST",我希望将它们解析为TimeZone Awate DateTime.我尝试使用strptime格式"%d-%b-%y%i:%m:%s%p%z" 但是,datetime的%z参数.strptime不识别bst是有效的输入,我无法找出处理解析日光节省时间的"正确"方法. 解决方案 如果您查看dateutil的错误,则说明类似: UnknownTimezoneWarning: tzname BST identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception. 换句话说,您可以通过将映射时
70 2023-10-22
编程技术问答社区
时区和本地化
我目前一直在UTC中存储,以使我开始在线携带多个站点和服务器时更容易. 当将date和datetime对象转换为我的模板中的字符串以及接受用户输入时,问题出现了. 6:00 pm UTC对PST中的某人而言并不重要.同样,要求用户在UTC中输入时间正在要求灾难. 如何以智能,不容易发生的方式正确地翻译这些值?有什么方法可以从HTTP请求中确定用户所在的时区?我真的需要一种方法来确定用户的时区,并尽可能少. 解决方案 依靠客户自我报告的时区域 的问题是,总会有机会(机会有多大),您将真正得到的是a utc偏移.如果您获得UTC偏移,则大多数时候您的逻辑都可以正常工作,但实际上,仅适用于客户生成的确切时间戳.任何过去或将来的时间都可能具有不同的UTC偏移,并且没有适当的时区数据库无法预测.在日光节省边界附近,使用UTC偏移会产生灾难性的错误结果. 除此之外,某些非文字用户(即奶奶)可能不知道如何设置其本地系统的时区;或在隧道会话或虚拟机上使用的用户可能具有"本地"时
38 2023-10-22
编程技术问答社区
如何在Matplotlib中处理带有时区的时间?
i有数据点,其横坐标为datetime.datetime具有时区的对象(它们的tzinfo恰好是通过mongodb获得的bson.tz_util.FixedOffset). 当我用scatter()绘制它们时,tick标签的时区是什么? 在matplotlibrc中更改timezone在显示的图中不会更改任何内容(我必须误解时区讨论在matplotlib文档中). 我用plot()进行了一些实验(而不是scatter()).当给出一个日期时,它会绘制并忽略时区.但是,当给出多个日期时,它使用固定时区,但是如何确定?我在文档中找不到任何东西. 最后,plot_date()应该是 解决这些时区问题的解决方案吗? 解决方案 这个问题已经在评论中回答了.但是我自己仍然在时区挣扎.为了清楚,我尝试了所有组合.我认为您有两种主要方法,具体取决于您的DateTime对象是否已经在所需的时区中或在不同的时区中,我尝试在下面描述它们.我可能仍然错过/混在一起. tim
56 2023-10-22
编程技术问答社区
Django DateTimeField存储日期时间,与tzinfo无关。
为什么django DateTimeField还原tzinfo in datetime to ? 以下是我的测试代码. 是正常还是错.? 如果正常,原因是什么? models.py class Date(models.Model): datetime = models.DateTimeField() settings.py TIME_ZONE = 'Asia/Seoul' USE_TZ = True test.py from django.utils import timezone datetime = timezone.localtime(timezone.localtimezone.now()) #now datetime is datetime.datetime(2015, 10, 22, 20, 31, 56, 248000, tzinfo=) mod
18 2023-10-22
编程技术问答社区
如何只用标准库将UTC日期时间转换为本地日期时间?
我有一个使用datetime.utcnow()创建并在数据库中持续的python datetime实例. 对于显示,我想使用默认的本地时区(即使用datetime.now()创建datetime.now()). 如何仅使用python标准库将UTC datetime转换为本地datetime(例如,no pytz依赖关系)? 似乎一种解决方案是使用datetime.astimezone(tz),但是如何获得默认的本地时区? 解决方案 我想我已经弄清楚了:计算以来以来以来的秒数,然后使用Time.LocalTime转换为本地Timzeone,然后将时间结构转换回DateTime ... EPOCH_DATETIME = datetime.datetime(1970,1,1) SECONDS_PER_DAY = 24*60*60 def utc_to_local_datetime( utc_datetime ): delta = utc_datetime
18 2023-10-22
编程技术问答社区
如何使日期时间对象具有感知能力(不幼稚)
我需要做的 我有一个timezone-unaware dateTime对象,我需要添加一个时区,以便能够将其与其他时区感知的dateTime对象进行比较.我不想将我的整个应用程序转换为TimeZone不知道这个遗留案例. 我尝试过的 首先,证明问题: Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import datetime >>> import pytz >>> unaware = datetime.datetime(2011,8,15,8,15,12,0) >>> unaware datetime.datetime(2011, 8, 15, 8, 15, 12) >>
12 2023-10-22
编程技术问答社区
Python: 如何将UTC时间戳从mm/dd/yyyy hh:mm:ss AM改为dd/mm/yyyy hh:mm:ss AM
我正在尝试更改CSV文件中UTC时间戳的格式,但似乎没有任何作用. 它一直在说有一个Valueerror does not match format '%m/%d/%Y %I:%M:%S %p' 下面有一个CSV列的示例 df[' UTC Event Timestamp'] = df[' UTC Event Timestamp'].astype(str) string_col = str(df) string_col.strip() datetime.strptime(string_col, '%m/%d/%Y %I:%M:%S %p') datetime.strptime(string_col, '%m/%d/%Y %I:%M:%S %p').strftime('%d/%m/%Y %I:%M:%S %p') print(string_col) 解决方案 您可以使用 df['string_col'].apply(lambda row: datetime.strptim
52 2023-10-22
编程技术问答社区
如何在使用Python从纪元转换为日期时间时获得毫秒部分
我有一个Unix Epoc时间为1571205166751 我想将其转换为日期时间毫秒 所需的结果应为2019-10-16 05:52:46:751 AM 但是使用以下代码,我将获得结果为2019-10-16 05:52:46,而不是毫秒. import time time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1571205166)) 转换时如何获得毫秒? P.S.我想掩盖时代的时间,而不是任何其他格式. 解决方案 使用 dateTime.dateTime.dateTime.dateTem一个> epoch_time = 1571205166751 dt = datetime.datetime.fromtimestamp(epoch_time/1000) dt.strftime("%Y-%m-%d %H:%M:%S.%f %p") 输出: '2019-10-16 11:22:4
18 2023-10-22
编程技术问答社区
pandas to_dict使用Python本地数据类型而不是时间戳。
我有一个包含Timesatamp列的pandas DataFrame df 我希望从df中创建一个行的迭代器(通过iter..方法或通过to_dict),其中Timesatamp值为python datetime. 我尝试过这样做 for col in df.select_dtypes(['datetime']): df[col] = df[col].dt.to_pydatetime() 但是,当使用上述迭代方法时,列似乎仍然是Timesatamp. 是否有'batch'y 可以实现这一目标,除了手动迭代时,它会转换每个值吗? 示例 df = pd.DataFrame({'d': pd.date_range('2018-01-01', freq='12h', periods=2), 'a':[1,2]}) for col in df.select_dtypes(['datetime']): df[col] = df[col].dt
32 2023-10-22
编程技术问答社区
在一天中寻找事件的开始时间和结束时间--Pandas时间序列,使结束时间不落入第二天。
我有一个气象时间df: df = pd.DataFrame({'date':['11/10/2017 0:00','11/10/2017 03:00','11/10/2017 06:00','11/10/2017 09:00','11/10/2017 12:00', '11/11/2017 0:00','11/11/2017 03:00','11/11/2017 06:00','11/11/2017 09:00','11/11/2017 12:00', '11/12/2017 00:00','11/12/2017 03:00','11/12/2017 06:00','11/12/2017 09:00','11/12/2017 12:00'], 'value':[850,np.nan,np.nan,np.nan,np.nan,500,650,780,np.nan,80
10 2023-10-21
编程技术问答社区
以数据帧形式获取午夜过后的时间
i有一个带有类型时间戳的列的数据框.我想从午夜以来找到(几秒钟)作为新专栏的时间.如何以简单的方式进行? eg: 输入: samples['time'] 2018-10-01 00:00:01.000000000 2018-10-01 00:00:12.000000000 type(samples['time'].iloc[0]) 输出: samples['time_elapsed'] 1 12 解决方案 当前答案太复杂或专业. samples = pd.DataFrame(data=['2018-10-01 00:00:01', '2018-10-01 00:00:12'], columns=['time'], dtype='datetime64[ns]') samples['time_elapsed'] = ((samples['time'] - samples['
26 2023-10-21
编程技术问答社区
在Python中将datetime.timedelta转换为ISO 8601持续时间?
给定datetime.timedelta,如何将其转换为ISO 8601持续时间字符串? 例如,给定datetime.timedelta(0, 18, 179651),如何获得'PT18.179651S'? 有关反向,请参见有没有简单的方法将ISO 8601持续时间转换为TimeDELTA持续时间?.. 解决方案 尽管 datetime module ISO 8601表示datetime或date对象的符号,当前不为timedelta对象支持它(python 3.7).但是, isodate module(pypi link)具有在ISO 8601中生成持续时间字符串的功能: In [15]: import isodate, datetime In [16]: print(isodate.duration_isoformat(datetime.datetime.now() - datetime.datetime(1985, 8, 13, 15))) P1214
18 2023-10-21
编程技术问答社区
为什么找不到Python datetime time delta?
我试图以mmddyyyy格式制作一系列日期.日期将从当前一天开始,然后在未来两周内进行.因此,这一切都取决于起始日期.当我运行代码时,我会发现一个错误: Traceback (most recent call last): File "timeTest.py", line 8, in day = datetime.timedelta(days=i) AttributeError: type object 'datetime.datetime' has no attribute 'timedelta' 我不确定为什么会发生这种情况,因为在网上搜索之后,我注意到人们以这种方式使用了" TimeDELTA". 这是我的代码: import time from datetime import datetime, date, time, timedelta dayDates = [] today = datetime.now() dayDates.appe
14 2023-10-21
编程技术问答社区
Python Pandas: TypeError: unsupported operand type(s) for +: 'datetime.time' and ' Timedelta';
我想总结两个熊猫系列. 第一个系列是HH:MM时值;第二个系列包含从pd.Timedelta获得的序列对象. 预期的结果是HH:MM时间,无论一天变化如何(例如22:00 + 4小时= 02:00). 我创建了这样的Delta系列: delta = pd.Series(0 for x in range(0, len(df.Time_In_Hours))) for j in range(0, len(df.Time_In_Hours)): delta[j] = pd.Timedelta(df.Time_In_Hours[j], 'h') df = df.assign(Delta = delta) print ("Delta dtype = %s" % (df.Delta.dtype)) print ("Start_Time dtype = %s" % (df.Start_Time.dtype)) #Output Delta dtype = object
28 2023-10-21
编程技术问答社区