繁体   English   中英

“如何在Python中计算连续时间值的差异”

[英]“How to calculate difference in succesive time values in Python”

我正在尝试计算字符串时间值之间的差异,但我无法读取微秒格式。 为什么我会出现此类错误? 以及我该如何修复我的代码?

我已经尝试过“ datetime.strptime”方法来将字符串转换为时间格式,然后使用pandas.dataframe.diff方法计算列表中每个项目之间的差异,并在excel中创建一列。

```
from datetime import datetime
import pandas as pd 

for itemz in time_list:
    df = pd.DataFrame(datetime.strptime(itemz, '%H %M %S %f'))
    ls_cnv.append(df.diff())

df = pd.DataFrame(time_list)
ls_cnv = [df.diff()]

print (ls_cnv)

```

我希望输出是

ls_cnv = [NaN, 00:00:00, 00:00:00] 
time_list = ['10:54:05.912783', '10:54:05.912783', '10:54:05.912783']

但是我却改为(时间数据'10:54:05.906224'与格式'%H%M%S%f'不匹配)

只是因为您的时间格式必须包含冒号和这样的点

"%H:%M:%S.%f"

您得到的错误是因为您使用strptime错误。

df = pd.DataFrame(datetime.strptime(itemz, '%H:%M:%S.%f'))

上面的表格是正确的形式,它是从time_list传递time_list但事实并非如此。 DataFrame以错误的方式创建DataFrame 如果需要数据, DataFrame是一个表。 以下各行将在每个循环中为每个itemz创建和替换一个新的DataFrame ,这是您列表中的一个元素。 因此,它将在第一个循环中创建一个带有一个元素的DataFrame ,该元素将为“ '10:54:05.912783'并且它将与自身进行diff() '10:54:05.912783' ,而没有其他值。

for itemz in time_list:
    df = pd.DataFrame(datetime.strptime(itemz, '%H %M %S %f'))
    ls_cnv.append(df.diff())

也许您想做的是以下几点:

from datetime import datetime
import pandas as pd

ls_cnv = []
time_list = ['10:54:03.912743', '10:54:05.912783', '10:44:05.912783']

df = pd.to_datetime(time_list)
data = pd.DataFrame({'index': range(len(time_list))}, index=df)
a = pd.Series(data.index).diff()
ls_cnv.append(a)
print (ls_cnv)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM