首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"How to calculate difference values in Python“

"How to calculate difference values in Python“
EN

Stack Overflow用户
提问于 2019-09-18 18:39:28
回答 2查看 48关注 0票数 0

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

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

代码语言:javascript
复制

从datetime导入datetime

将熊猫作为pd导入

对于time_list中的itemz:

代码语言:javascript
复制
df = pd.DataFrame(datetime.strptime(itemz, '%H %M %S %f'))
代码语言:javascript
复制
ls_cnv.append(df.diff())

df = pd.DataFrame(time_list)

ls_cnv = df.diff()

打印(ls_cnv)

代码语言:javascript
复制

我希望输出结果是

代码语言:javascript
复制
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‘不匹配)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-18 19:28:32

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

代码语言:javascript
复制
df = pd.DataFrame(datetime.strptime(itemz, '%H:%M:%S.%f'))

上面的形式应该是正确的,从您的time_list传递的形式,但事实并非如此。您也以错误的方式创建了DataFrameDataFrame是一个表,如果你想要数据的话。下面几行代码将在每个循环中为每个itemz创建和替换一个新的DataFrame,该元素每次都是列表中的一个元素。因此,它将在第一个循环中创建一个包含一个元素的DataFrame,该元素将为'10:54:05.912783',并且在没有其他值的情况下,它将diff()该元素。

代码语言:javascript
复制
for itemz in time_list:
    df = pd.DataFrame(datetime.strptime(itemz, '%H %M %S %f'))
    ls_cnv.append(df.diff())

也许你想做的是:

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2019-09-18 18:45:40

仅仅因为您的时间格式必须包括冒号和点,如下所示

代码语言:javascript
复制
"%H:%M:%S.%f"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57990841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档