将Pandas DateTimeIndex转换为YYYYMMDD整数?

时间:2014-08-29 00:30:41

标签: python numpy pandas

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

当使用SQLite flavor并且index = True时,Pandas的 to_sql()会失败并出现'sqlite3.InterfaceError'。显然使用SQLalchemy风格可以将DateTimeIndex转换为字符串,但我还需要将其作为YYYYMMDD整数。

虽然似乎有 to_datetime() to_pydatetime()功能,但似乎没有 from_datetime()功能

1 个答案:

答案 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整数数组的最有效或最具可读性的方法,只是因为它对你看来已经知道的函数是可行的关于,如果这不是你想要的,你的问题没有意义。)