Python 是否将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()

是否有首选方法将DateTimeIndex转换为YYYYMMDD整数列?我需要将旧式存储的YYYYMMDD整数格式返回到假定日期为整数的预先存在的SQLite表中

Pandas'to_sql()在使用SQLite Flavor和index=True时失败,并出现“sqlite3.interfaceeerror”。显然,使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我需要将其作为YYYYMMDD整数


虽然似乎有to_datetime()to_pydatetime()函数,但似乎没有from_datetime()函数。

我不明白你想要什么。您正在尝试将
DateTimeIndex
转换为
YYYYMMDD
格式;为什么您需要一个
from\u datetime
方法来实现这一点

无论如何,您可以在其上映射/广播Pandas
Timestamp.strftime
函数,或者使用找到的
函数映射Python
datetime.strftime
函数,然后在生成的数组上映射Python
datetime.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