gpt4 book ai didi

python - 如何在Python中从Excel列表中读取时间戳

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:50 24 4
gpt4 key购买 nike

我对 python 很陌生,并且已经在努力完成一项简单的任务,比如从 Excel 列表导入一系列测量的时间戳。Excel 文件有一列用于日期,一列用于时间。我需要数据进行进一步计算,例如时差等。

我尝试了不同的方式来获取数据。到目前为止我的代码如下所示:

  1. pyexcel 方法

    import pyexcel as pe
    import datetime
    import time
    from datetime import time
    import timestring

    for n in range(len(users)):
    sheet = pe.get_sheet(file_name=users[n],name_columns_by_row=0)
    sheet = sheet.to_array()
    data_meas = np.array(sheet)

    for row in range(len(data_meas)):
    print(type(row))
    input_time = data_meas[row,1]
    input_date = data_meas[row,0]
    times = [datetime.datetime.strptime(input_date, input_time, "%d %b %Y %H:%M:%S")]

    我在最后一行收到此错误:

    TypeError: strptime() takes exactly 2 arguments (3 given)

  2. 使用 xlrd 的方法

    import xlrd
    from datetime import time
    inputdata = xlrd.open_workbook('file.xls')
    sheet = inputdata.sheet_by_index(0)
    for row in sheet:
    input_date=sheet.cell_value(row,0)
    input_time=sheet.cell_value(row,1)
    date_values = xlrd.xldate_as_tuple(input_time, inputdata.datemode)
    time_value = time(*date_values[3:])

    TypeError: 'Sheet' object is not iterable

有人知道如何帮助我吗?我很感激每一个提示。

最佳答案

关于您的第一个解决方案,strptime 仅采用一个日期字符串作为输入。您应该加入 input_dateinput_time:

input_time = '18:20:00'
input_date = 'Mon, 30 Nov 2015'
time = datetime.datetime.strptime(' '.join([input_date, input_time]), "%a, %d %b %Y %H:%M:%S")

要创建datetime对象的整个列表,您可以尝试:

times = [datetime.datetime.strptime(' '.join([data_meas[row,0], data_meas[row,1]]), "%a, %d %b %Y %H:%M:%S") for row in range(len(data_meas))]

编辑:

如果您想保留 for 循环,则必须将每个 datetime 对象附加到您的列表中(否则您将只保留最后一个日期):

data_meas = np.array([['07/11/2015 18:20:00'],['09/11/2015 21:20:00']])

#list initilization
times = []

for row in range(len(data_meas)):
input_date = data_meas[row,0]
#we add a new item to our list
times.append(datetime.datetime.strptime(input_date, "%d/%m/%Y %H:%M:%S"))

现在,您可以访问时间列表中的每个日期时间。要计算时间差,可以查看 timedelta 上的文档.

#Create a timedelta object
t1 = times[1] - times[0]
#Convert time difference in seconds
t2 = t1.total_seconds()

关于python - 如何在Python中从Excel列表中读取时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com