如何从 python 中的 excel 列表中读取时间戳

How to read timestamp from excel list in python

我是 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 loop,您必须将每个 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"))

现在,您可以访问列表 times 中的每个 datetime。要计算时差,您可以查看 timedelta.

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