1

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

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

4

1 回答 1

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',etc]

于 2014-12-23T07:00:31.480 回答