2014-10-03 34 views
1

我是新来的Python(从Matlab转换),我无法读取CSV文件。基本上,我想创建一个数组与一个变量的日期/时间序列和相应的数据值(湿度测量)在另一个变量(我想跳过第二列)。文件格式如下:使用loadtext为CSV文件的日期/时间

07-24-14 01:00:01 PM,%RH,36.988 
07-24-14 02:00:01 PM,%RH,40.832 
... 

我使用numpy的loadtxt功能如下(注:有在文件中21个headerlines):

def datestr2num(s): 
    return datetime.strptime(s,'%m-%d-%y %I:%M:%S %p') 

dates,vals = np.loadtxt('File.csv',usecols=(0,2),skiprows=21,converters={0:datestr2num},delimiter=',',unpack=True) 

我收到以下错误:

TypeError: float() argument must be a string or a number 

感谢您的帮助提前!

回答

1

另一种方法是使用浮动时间表示法。我经常使用matplotlib时间戳:

from matplotlib.dates import date2num 

def datestr2num(s): 
    return date2num(datetime.strptime(s, '%m-%d-%y %I:%M:%S %p')) 

或者你可以使用Python内置的“时间”:如果您要使用这些表示你的时间的一个反正

import time 

def datestr2num(s): 
    return time.mktime(datetime.strptime(s, '%m-%d-%y %I:%M:%S %p').timetuple()) 

,这可能运作良好。如果你想日期时间,使用达诺的解决方案。