如何从 python 中的 excel 列表中读取时间戳
How to read timestamp from excel list in python
我是 python 的新手,并且已经在努力完成一项简单的任务,例如从 excel 列表中导入一系列测量的时间戳。
excel 文件有一列用于日期,一列用于时间。我需要数据用于进一步计算,如时差等。
我尝试了不同的方式来获取数据。到目前为止,我的代码如下所示:
方法用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)
方法与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_date
和 input_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()
我是 python 的新手,并且已经在努力完成一项简单的任务,例如从 excel 列表中导入一系列测量的时间戳。 excel 文件有一列用于日期,一列用于时间。我需要数据用于进一步计算,如时差等。
我尝试了不同的方式来获取数据。到目前为止,我的代码如下所示:
方法用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)
方法与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_date
和 input_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()