numpy.genfromtxt转换函数出错

时间:2014-12-23 06:40:52

标签: csv numpy genfromtxt

我的数据集包含日期,数据如下所示。 数据是混合格式,我想要的是以日期时间格式读取日期和浮动数据并存储在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')

为什么会抛出这样的错误?有人可以提出解决方案吗? 任何想法和所有建议都将受到高度赞赏。

1 个答案:

答案 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'等]