Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 DatetimeIndex转换时出现ValueError错误_Python_Datetime_Pandas - Fatal编程技术网

Python DatetimeIndex转换时出现ValueError错误

Python DatetimeIndex转换时出现ValueError错误,python,datetime,pandas,Python,Datetime,Pandas,我正在将所有ISO-8601格式的值转换为Unix值。由于某种莫名其妙的原因,这条线 a_col = pd.DatetimeIndex(a_col).astype(np.int64)/10**6 引起错误 ValueError:无法转换0 2001-06-29 。。。(列的缩写输出) 名称:DateCol,数据类型:datetime64[ns]到datetime数据类型 这很奇怪,因为我保证每个值都是datetime.datetime格式的,正如您在这里看到的: if a_col.dtypes

我正在将所有ISO-8601格式的值转换为Unix值。由于某种莫名其妙的原因,这条线

a_col = pd.DatetimeIndex(a_col).astype(np.int64)/10**6
引起错误

ValueError:无法转换0 2001-06-29

。。。(列的缩写输出)

名称:DateCol,数据类型:datetime64[ns]到datetime数据类型

这很奇怪,因为我保证每个值都是datetime.datetime格式的,正如您在这里看到的:

if a_col.dtypes is (np.dtype('object') or np.dtype('O')):
      a_col = a_col.apply(lambda x: x if isinstance(x, datetime.datetime) else epoch)
a_col = pd.DatetimeIndex(a_col).astype(np.int64)/10**6
Epoch是datetime.datetime


当我检查给我一个错误的列的数据类型时,它是“object”),这正是我要检查的。我缺少什么吗?

假设您的时区是美国/东部(基于您的数据集),并且您的数据帧名为
df
,请尝试以下操作:

import datetime as dt
from time import mktime
import pytz

df['Job Start Date'] = \
    df['Job Start Date'].apply(lambda x: mktime(pytz.timezone('US/Eastern').localize(x)
                                         .astimezone(pytz.UTC).timetuple()))

>>> df['Job Start Date'].head()
0     993816000
1    1080824400
2    1052913600
3    1080824400
4    1075467600
Name: Job Start Date, dtype: float64

您首先需要使您的“naive”datetime对象具有时区意识(对美国/东部),然后将其转换为UTC。最后,将新的UTC意识datetime对象作为时间表从时间模块传递给函数。

我无法复制您的错误:>>>pd.DatetimeIndex(['2001-06-29'])。astype(np.int64)/10**6数组([993772800000])。前一年的日期是否为零?“无法转换0 2001-06-29”看起来就是这样。我已在此处发布了数据集:。要读取csv,我使用了:data=pd.read\u excel(a\u文件,sheetname=0,skiprows=range(1,2),header=1)。问题所在的列是以前在xls上工作的作业开始日期。但是,当应用于另一个数据集中的同一列时,会出现此错误:“AttributeError:“int”对象没有属性“tzinfo”:此错误与我最初使用的代码(上面)不符.你有什么想法吗?该数据集中有一个整数值(10060130)。为了解决这个问题,我首先执行对象np.dtype('object'))检查,然后使用你的函数。它现在工作。相当慢,但我可以稍后进行优化。谢谢!!我对此提出了一个单独的问题,这些检查似乎无法解决NaT值。如果你对此有任何见解,请让我知道!