![](/img/trans.png)
[英]How to calculate time difference between two succesive rows with groupby?
[英]“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.