簡體   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