我正在尝试解析一大堆击键数据,并且遇到了数据类型挑战,试图在按键和释放之间的时间内创建一列。
我的目标是创建datetime.timedelta类型的timedeltas列。解析器流程如下:
我在第2步遇到问题 - 当我在解释器中减去两个单独的时间戳时,我得到一个datetime.timedelta(这就是我想要的),当我减去两个时间戳系列时,结果系列是numpy.timedelta64类型!有没有人知道为什么pandas会为系列减法返回这个数据类型,而我却为各个减法获得了datetime.timedelta?
非常感谢你!
我已经在下面粘贴了我的调试会话,我首先在一行中手动进行转换,然后使用全系列运算符进行相同的转换。
手动:
In : touchtime = task_dataframe['TouchTime'].ix[0]
In : touchtime
Out[1]: u'07:01:00.891'
In : releasetime = task_dataframe['ReleaseTime'].ix[0]
In : releasetime
Out[1]: u'07:01:00.950'
In : import pandas as pd
In : touchtime = pd.to_datetime(touchtime)
In : touchtime
Out[1]: Timestamp('2014-05-30 07:01:00.891000', tz=None)
In : releasetime = pd.to_datetime(releasetime)
In : releasetime
Out[1]: Timestamp('2014-05-30 07:01:00.950000', tz=None)
In : holdtime = releasetime - touchtime
In : holdtime
Out[1]: datetime.timedelta(0, 0, 59000)
系列范围:
In : task_dataframe['TouchTime'] = task_dataframe['TouchTime'].map(lambda x: pd.to_datetime(x))
In : task_dataframe['ReleaseTime'] = task_dataframe['ReleaseTime'].map(lambda x: pd.to_datetime(x))
In : releasetime2 = task_dataframe['ReleaseTime'].ix[0]
In : releasetime2
Out[1]: Timestamp('2014-05-30 07:01:00.950000', tz=None) # Same output as above
In : releasetime == releasetime2
Out[1]: True # Showing equivalence
In : task_dataframe['HoldTime'] = task_dataframe['ReleaseTime'] - task_dataframe['TouchTime']
In : holdtime2 = task_dataframe['HoldTime'].ix[0]
In : holdtime2
Out[1]: numpy.timedelta64(59000000,'ns')
In : holdtime == holdtime2
Out[1]: False # Non-equivalent
答案 0 :(得分:1)