我是 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
提前感谢您的帮助!
最佳答案
另一种方法是使用浮点时间表示。我经常使用 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())
如果您无论如何都会使用这些表示形式之一,那么这可能会很有效。如果您想要日期时间,请使用 dano 的解决方案。
关于python - 使用带有日期/时间的 CSV 文件的 loadtext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184154/