我正在尝试计算字符串时间值之间的差,但我无法读取微秒格式。为什么我会出现此类错误?以及我该如何修复我的代码?
我已经尝试过“ 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'不匹配)
答案 0 :(得分:0)
仅仅是因为您的时间格式必须包含冒号和这样的点
"%H:%M:%S.%f"
答案 1 :(得分:0)
您得到的错误是因为您使用strptime
错误。
df = pd.DataFrame(datetime.strptime(itemz, '%H:%M:%S.%f'))
上面的格式是正确的,是您的time_list
传递的格式,但事实并非如此。您也以错误的方式创建了DataFrame
。如果需要数据,DataFrame
是一个表。以下各行将在每个循环中为每个DataFrame
创建和替换一个新的itemz
,这是您列表中的一个元素。因此,它将在第一个循环中创建一个DataFrame
,其中一个元素为'10:54:05.912783'
,并且在没有其他值的情况下,它将diff()
与其自身一起{1>}。
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)