我的数据集包含日期,数据如下所示。 数据是混合格式,我想要的是以日期时间格式读取日期和浮动数据并存储在numpy矩阵中。
CST,Max Tempe atu eC,Mean Tempe atu eC,Min Tempe atu eC,Dew PointC,MeanDew PointC,Min DewpointC,Max Humidity, Mean Humidity, Min Humidity, Max Sea Level P essu ehPa, Mean Sea Level P essu ehPa, Min Sea Level P essu ehPa, Max Visi ilityKm, Mean Visi ilityKm, Min Visi ilitykM, Max Wind SpeedKm h, Mean Wind SpeedKm h, Max Gust SpeedKm h,P ecipitationmm, CloudCove , Events,WindDi Deg ees
2014-12-1,33,28,22,24,23,21,94,81,53,1017,1012,1009,19,12,10,19,6,,0.00,1,,23
2014-12-2,34,28,22,25,22,21,96,74,43,1015,1011,1007,19,12,10,23,10,,0.00,0,,300
2014-12-3,34,28,21,23,21,15,89,71,33,1013,1010,1008,19,13,10,11,5,,0.00,0,,314
我已经尝试了numpy.genfromtxt,如下所示
def c_date(dstr):
return dt.datetime.strptime(dstr, '%Y-%m-%-d')
A=np.genfromtxt('test.csv',names=('CST',)+ tuple('col{i}'.format(i=i) for i in range(1,24)),converters={'CST': c_date}, dtype=None)
但它给出了以下显示的错误。
ConverterError: Converter #0 is locked and cannot be upgraded: (occurred line #1 for value 'CST,Max')
为什么会抛出这样的错误?有人可以提出解决方案吗? 任何想法和所有建议都将受到高度赞赏。
答案 0 :(得分:1)
首先在c_date
函数中有一个额外的短划线。纠正这一点,我得到以下工作:
A = np.genfromtxt(txt,names=True,converters={'CST': c_date}, dtype=None,delimiter=',')
您缺少delimiter
参数。
这也有效:
A = np.genfromtxt(txt,names=('CST',)+ tuple('col{i}'.format(i=i) for i in range(1,24)),
converters={'CST': c_date}, dtype=None,delimiter=',',skip_header=1)
我在这里添加了skip_header
。当您提供自己的名称时,需要跳过标题行中的名称。显然,模糊的错误导致尝试读取标题行,就像它是数据一样。
A=np.genfromtxt(txt,converters={0: c_date}, dtype=None,delimiter=',',skip_header=1)
生成自动名称,类似于你的名字,除了['f0','f1'等]