使用带有日期/时间的CSV文件的loadtext

时间:2014-10-03 17:54:04

标签: python datetime csv numpy

我是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

提前感谢您的帮助!

1 个答案:

答案 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的解决方案。