【问题标题】:numpy.genfromtxt Error with convert functionnumpy.genfromtxt 转换函数出错
【发布时间】:2015-02-21 07:07:59
【问题描述】:

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

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

【问题讨论】:

  • 除此之外:如果您使用的是真实数据和命名列,那么使用pandas 可能会比使用numpy 更容易。

标签: csv numpy genfromtxt


【解决方案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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多