是否有将pandas DateTimeIndex转换为YYYYMMDD整数列的首选方法?我需要将旧存储的YYYYMMDD整数格式返回到预先存在的SQLite表中,该表假设日期是整数。
当使用SQLite flavor并且index = True时,Pandas的 to_sql()会失败并出现'sqlite3.InterfaceError'。显然使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我还需要将其作为YYYYMMDD整数。
虽然似乎有 to_datetime()和 to_pydatetime()功能,但似乎没有 from_datetime()功能
答案 0 :(得分:1)
我对你想要的东西感到困惑。您正在尝试将DateTimeIndex
转换为 YYYYMMDD
格式;你为什么需要一个from_datetime
方法呢?
无论如何,您可以在其上映射/广播Pandas Timestamp.strftime
函数,或者使用您找到的to_pydatetime
函数,然后在生成的数组上映射Python datetime.strftime
函数。
显然使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我需要将其作为YYYYMMDD整数。
这很容易。给定YYYYMMDD
字符串,要将其转换为整数,只需在其上调用int
- 或者,如果它在Pandas / Numpy数组中,则在其上映射或广播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
整数数组的最有效或最具可读性的方法,只是因为它对你看来已经知道的函数是可行的关于,如果这不是你想要的,你的问题没有意义。)