Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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 将带有日期的数据框转换为Spark数据框时出错 编辑:问题似乎在于Windows中标准日期时间库将日期时间转换为纪元前日期时间的时间戳_Python_Python 3.x_Pandas_Date_Apache Spark - Fatal编程技术网

Python 将带有日期的数据框转换为Spark数据框时出错 编辑:问题似乎在于Windows中标准日期时间库将日期时间转换为纪元前日期时间的时间戳

Python 将带有日期的数据框转换为Spark数据框时出错 编辑:问题似乎在于Windows中标准日期时间库将日期时间转换为纪元前日期时间的时间戳,python,python-3.x,pandas,date,apache-spark,Python,Python 3.x,Pandas,Date,Apache Spark,请参见以下示例: import datetime #this works datetime.datetime(1973,1,23,0).timestamp() #this produces OSError: [Errno 22] Invalid argument datetime.datetime(1953,1,23,0).timestamp() 问题 当我将datetime64[ns]日期早于历元的Pandas数据帧转换为Apache Spark数据帧时,我会收到一系列关于“Pandas

请参见以下示例:

import datetime

#this works
datetime.datetime(1973,1,23,0).timestamp()

#this produces OSError: [Errno 22] Invalid argument
datetime.datetime(1953,1,23,0).timestamp()
问题 当我将datetime64[ns]日期早于历元的Pandas数据帧转换为Apache Spark数据帧时,我会收到一系列关于“Pandas._libs.tslibs.tzconversion._tz_convert_tzlocal_utc”(下面的完整堆栈跟踪)中忽略的
异常的警告,并且历元前的日期会更改为历元。为什么会发生这种情况?我该如何预防

软件版本 视窗10 Python:3.7.6 pyspark 2.4.5 熊猫1.0.1

要复制的代码 堆栈跟踪 结果数据帧 数据类型
这不是一个答案,但可能有助于了解情况。即使是接近1970 01 00:00的日期,也给我22号错误。 (我希望解决一些非常早期的历元时间,因为在NTP时间可用之前记录数据。) 最早的工作日期是在1970年01月17日左右

>>> import datetime
>>> a3 = datetime.datetime(1970,1,1,17,59)
>>> a1 = datetime.datetime(1970,1,1,17,0)
>>> a0 = datetime.datetime(1970,1,1,16,59)
>>> a3.timestamp()
89940.0
>>> a1.timestamp()
86400.0
>>> a0.timestamp()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
>>>
导入日期时间 >>>a3=日期时间。日期时间(1970,1,1,17,59) >>>a1=日期时间。日期时间(1970,1,1,17,0) >>>a0=日期时间。日期时间(1970,1,1,16,59) >>>a3.时间戳() 89940 >>>a1.时间戳() 86400 >>>a0.时间戳() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 OSError:[Errno 22]参数无效 >>>
我的电脑在时区MDT或GMT-6(MST和夏令时)

Python新手和第一次回答作者! 视窗10。Python 3.7(64位)。附近有一条巨蟒,但这里没有使用

Exception ignored in: 'pandas._libs.tslibs.tzconversion._tz_convert_tzlocal_utc'
Traceback (most recent call last):
  File "C:\Users\jbishop\AppData\Roaming\Python\Python37\site-packages\dateutil\tz\_common.py", line 144, in fromutc
    return f(self, dt)
  File "C:\Users\jbishop\AppData\Roaming\Python\Python37\site-packages\dateutil\tz\_common.py", line 258, in fromutc
    dt_wall = self._fromutc(dt)
  File "C:\Users\jbishop\AppData\Roaming\Python\Python37\site-packages\dateutil\tz\_common.py", line 222, in _fromutc
    dtoff = dt.utcoffset()
  File "C:\Users\jbishop\AppData\Roaming\Python\Python37\site-packages\dateutil\tz\tz.py", line 222, in utcoffset
    if self._isdst(dt):
  File "C:\Users\jbishop\AppData\Roaming\Python\Python37\site-packages\dateutil\tz\tz.py", line 291, in _isdst
    dstval = self._naive_is_dst(dt)
  File "C:\Users\jbishop\AppData\Roaming\Python\Python37\site-packages\dateutil\tz\tz.py", line 260, in _naive_is_dst
    return time.localtime(timestamp + time.timezone).tm_isdst
OSError: [Errno 22] Invalid argument
sparkdf.show()
+-------------------+
|              Dates|
+-------------------+
|2019-03-29 00:00:00|
|1970-01-01 00:00:00|
+-------------------+
sparkdf.printSchema()
root
 |-- Dates: timestamp (nullable = true)
>>> import datetime
>>> a3 = datetime.datetime(1970,1,1,17,59)
>>> a1 = datetime.datetime(1970,1,1,17,0)
>>> a0 = datetime.datetime(1970,1,1,16,59)
>>> a3.timestamp()
89940.0
>>> a1.timestamp()
86400.0
>>> a0.timestamp()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
>>>