将Pandas DateTimeIndex转换为YYYYMMDD整数



是否有将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整数数组的最有效或最可读的方法,只是说它对于您似乎已经知道的函数是可行的,如果这不是您想要的,那么您的问题就没有意义了。)

最新更新