我正在使用一个嵌入Python的C++项目,并与DeaTime/Times戳一起运行了熊猫数据文件。
将datetime对象添加到pandas时,如果它们在时间戳范围内,则它们似乎会自动转换为时间戳对象。例如:
这在C++方面是有问题的,因为我使用PyDATEFITAPI来提取时间信息,而熊猫时间戳对象似乎不兼容。p>
对于上下文,我使用boostpython提取对象,然后从boost对象中获取PyObject指针,并尝试获取日期数据
以下是我用来提取日期和时间信息的内容:
if(PyDateTime_Check(pyObj)) {
SQLSMALLINT year = PyDateTime_GET_YEAR(pyObj);
SQLUSMALLINT month = PyDateTime_GET_MONTH(pyObj);
SQLUSMALLINT day = PyDateTime_GET_DAY(pyObj);
SQLUSMALLINT hour = PyDateTime_DATE_GET_HOUR(pyObj);
SQLUSMALLINT minute = PyDateTime_DATE_GET_MINUTE(pyObj);
SQLUSMALLINT second = PyDateTime_DATE_GET_SECOND(pyObj);
SQLUINTEGER usec = PyDateTime_DATE_GET_MICROSECOND(pyObj);
}
PyDateTime/PyDate/PyTime_检查函数都不会在pandas Timestamp对象中返回true,如果我尝试绕过该检查,所有提取方法都会得到看似随机的数字
如何从Timestamp对象中获取相关的日期/时间信息?有没有办法直接获取它们(我错过了一些API),如果没有,有没有办法将pandas Timestamp对象转换成PyDateTime对象?如果需要,我也可以使用boost API或boost::numpy API,因为我的项目中已经有了它们
我希望不要在实际的Python命名空间中修改对象,只在提取后的C++侧修改,但是如果没有其他方法,那是不可能的。p>
我已经想出了这个方法,以防以后有人找这个
熊猫时间戳对象实际上是作为PyDateTime对象提取的,所以它们不是问题所在。我的问题是,我将它们提取为numpy ndarray,以便首先从Pandas数据帧获取列,numpy将时间戳存储为datetime64[ns]dtype。这是从新纪元(1970,1,1)算起的纳秒
为了使这个numpy值正常工作,我改为使用astype将其转换为双数据类型,然后使用PyDateTime\u FromTimestamp
相关问题 更多 >
编程相关推荐