我正在计算熊猫数据帧中的时间差,这样我就可以对这些时间差进行求和。下面是我的完整代码:
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: timedelta64ns。但是在第5行之后,打印“oneMin‘’TIME_DIFFERENCE‘”会显示dtype: object。这导致在尝试第6行时出现错误,第6行指出:“不支持的操作数类型为+:'int‘and 'Timedelta'”。我真的不知道发生了什么。
问题是,我想将时间差限制在1分钟内。在我用这行代码删除1分钟的时间差之前:
oneMin = oneMin[oneMin['TIME_DIFFERENCE'] < '00:01:00']这完全可以正常工作。但我不想删除超过一分钟的值,我想将它们限制在一分钟内。
发布于 2021-05-28 20:54:25
问题是您正在将列'TIME_DIFFERENCE‘的一些值设置为字符串'00:01:00’。您可能要做的是将代码中的第五行替换为
oneMin.loc[(oneMin.TIME_DIFFERENCE > '00:01:00'), 'TIME_DIFFERENCE'] = pd.Timedelta('00:01:00')https://stackoverflow.com/questions/67622834
复制相似问题