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

时间:2015-11-30 15:02:34

标签: python excel timestamp timedelta

我是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()只需要2个参数(给定3个)

  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'对象不可迭代

  3. 有人知道如何帮助我吗? 我很欣赏每一个提示。

1 个答案:

答案 0 :(得分:1)

关于您的第一个解决方案,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"))

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

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