Pandas操作将dtype:timedelta64[ns]更改为dtype:object



我正在计算panda数据帧中的时间差,以便对这些时间差求和。以下是我的完整代码:

temp['ACCESS_TIME'] = pd.to_datetime(temp['ACCESS_TIME'])
temp = temp.sort_values(['ID','ACCESS_TIME'])
temp['TIME_DIFFERENCE'] =  temp.groupby(['ID'])['ACCESS_TIME'].diff()
oneMin = temp.copy()
oneMin.loc[(oneMin.TIME_DIFFERENCE > '00:01:00'), 'TIME_DIFFERENCE'] = '00:01:00'
oneMin['DURATION'] = oneMin.groupby(['ID'])['TIME_DIFFERENCE'].transform('sum')

在第三行之后;temp[‘TIME_DIFFERENCE’]";显示dtype:timedelta64[ns]。但是在第5行之后;oneMin[‘TIME_DIFFERENCE’]";显示dtype:object。这导致在尝试第6行时出现错误;不支持+的操作数类型:"int"one_answers"Timedelta";。我真的不知道发生了什么。

问题是我想把时差限制在1分钟。之前我只是用这条线消除了1分钟的时差:

oneMin = oneMin[oneMin['TIME_DIFFERENCE'] < '00:01:00']

这完全可以。但我不想在一分钟内删除这些值,我想在一刻内将其限制。

问题是将列"TIME_DIFFERENCE"的某些值设置为字符串"00:01:00"。你可能想做的是用替换代码中的第五行

oneMin.loc[(oneMin.TIME_DIFFERENCE > '00:01:00'), 'TIME_DIFFERENCE'] = pd.Timedelta('00:01:00')

相关内容

最新更新