我是Python新手(从Matlab转换),我在阅读CSV文件时遇到问题。基本上,我想创建一个数组,其中一个变量中的日期/时间序列和另一个变量中的相应数据值(湿度测量)(我想跳过第二列)。文件格式如下:
07-24-14 01:00:01 PM,%RH,36.988
07-24-14 02:00:01 PM,%RH,40.832
...
我正在使用numpy loadtxt函数,如下所示(注意:文件中有21个标题行):
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
提前感谢您的帮助!
答案 0 :(得分:1)
另一种方法是使用浮点时间表示。我经常使用matplotlib时间戳:
from matplotlib.dates import date2num
def datestr2num(s):
return date2num(datetime.strptime(s, '%m-%d-%y %I:%M:%S %p'))
或者您可以使用内置'time'的python:
import time
def datestr2num(s):
return time.mktime(datetime.strptime(s, '%m-%d-%y %I:%M:%S %p').timetuple())
如果您无论如何都会使用其中一种陈述,这可能会很有效。如果你想要日期时间,请使用dano的解决方案。