是否有将pandas DateTimeIndex转换为YYYYMMDD整数列的首选方法?我需要YYYYMMDD整数格式,以便将旧存储返回到预先存在的SQLite表中,该表假定日期是整数。
Pandas"to_sql()在使用SQLite风格和index=True时失败,返回"sqlite3.InterfaceError"。显然,使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我需要将其作为YYYYMMDD整数。
虽然似乎有to_datetime()和to_pydatetime(。
我被你想要的弄糊涂了。您正在尝试将DateTimeIndex
转换为YYYYMMDD
格式;为什么你需要from_datetime
方法来做到这一点?
无论如何,您可以在其上映射/广播Pandas Timestamp.strftime
函数,也可以使用找到的to_pydatetime
函数,然后在生成的数组上映射Python datetime.strftime
函数。
显然,使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我需要将其作为YYYYMMDD整数。
这很容易。给定一个YYYYMMDD
字符串,要将其转换为整数,只需对其调用int
——或者,如果它在Pandas/Numbery数组中,则在其上映射或广播int
,或者,更简单地说,只需强制转换其dtype。
例如:
>>> 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
转换为YYYYMMDD
整数数组的最有效或最可读的方法,只是说它对于您似乎已经知道的函数是可行的,如果这不是您想要的,那么您的问题就没有意义了。)