Python 是否将DateTimeIndex转换为YYYYMMDD整数?
是否有首选方法将DateTimeIndex转换为YYYYMMDD整数列?我需要将旧式存储的YYYYMMDD整数格式返回到假定日期为整数的预先存在的SQLite表中 Pandas'to_sql()在使用SQLite Flavor和index=True时失败,并出现“sqlite3.interfaceeerror”。显然,使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我需要将其作为YYYYMMDD整数Python 是否将DateTimeIndex转换为YYYYMMDD整数?,python,numpy,pandas,Python,Numpy,Pandas,是否有首选方法将DateTimeIndex转换为YYYYMMDD整数列?我需要将旧式存储的YYYYMMDD整数格式返回到假定日期为整数的预先存在的SQLite表中 Pandas'to_sql()在使用SQLite Flavor和index=True时失败,并出现“sqlite3.interfaceeerror”。显然,使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我需要将其作为YYYYMMDD整数 虽然似乎有to_datetime()和to_pydatetime()
虽然似乎有to_datetime()和to_pydatetime()函数,但似乎没有from_datetime()函数。我不明白你想要什么。您正在尝试将
DateTimeIndex
转换为YYYYMMDD
格式;为什么您需要一个from\u datetime
方法来实现这一点
无论如何,您可以在其上映射/广播PandasTimestamp.strftime
函数,或者使用找到的函数映射Pythondatetime.strftime
函数,然后在生成的数组上映射Pythondatetime.strftime
函数
显然,使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我需要将其作为YYYYMMDD整数
那很容易。给定一个YYYYMMDD
字符串,要将其转换为整数,只需在其上调用int
,或者,如果它位于Pandas/Numpy数组中,则在其上映射或广播int
,或者更简单地说,只需转换其数据类型
例如:
>>> dti = pd.DatetimeIndex(['2014-08-31', '2014-09-01'])
>>> pdt = dti.to_pydatetime()
>>> sdt = np.vectorize(lambda s: s.strftime('%Y%m%d'))(pdt)
>>> idt = sdt.astype('I4')
>>> idt
array([20140831, 20140901], dtype=uint32)
(我并不是说这是将DateTimeIndex
转换为yyyyymmdd
整数数组的最有效或可读性最高的方法,只是说它对于您似乎已经知道的函数是可行的,如果这不是您想要的,您的问题就没有意义了。)谢谢,对我有用。我只是在想from_datetime
函数将有助于简化/优化从DateTimeIndex
到numpy整数数组或用户可能想要的其他数据类型的转换。我想——无论如何,谢谢你的例子。@bazel:啊,你是说np.array
上的from_datetime
?numpy将其写为.astype('I4')
,带有一些快捷方式,如.asi8()
(您必须在某个地方指定to
类型;您不必指定from
类型,因为数组已经知道它是什么数据类型……)。问题是您正在尝试转换为非标准格式。您可以直接从Timestamp
到int
,但从Unix时代开始,您将获得纳秒,而不是YYYYMMDD
。您可以从Timestamp
转到str
,但随后会得到ISO/RFC格式,yyy-MM-DDTHH:MM:SS
。