【问题标题】:Reading Dates as column names Numpy genfromtxt将日期读取为列名 Numpy genfromtxt
【发布时间】:2016-05-24 14:45:33
【问题描述】:

我想从 csv 文件创建一个 numpy 数组。数据以逗号分隔,但看起来像这样:

seqid   9/19/2009   9/26/2009   10/3/2009
4315      228046      227475      239080
19866     22241       27211       25313
23436     23576       23678       24687
23593     58074       61569       58564
23609     334673      313980      246823

我想将我的列名保留为这些日期,目前我正在使用代码:

mcvs = np.genfromtxt('csvfile.csv', delimiter=',', dtype=None, names=True)

当我使用 names=True 时,我得到一个 void 类型的 1 列数组。

我在这里错过了什么?

【问题讨论】:

    标签: python date csv numpy


    【解决方案1】:

    对您的示例进行操作(使用空格作为分隔符),我得到一个包含 4 个字段的一维结构化数组。字段名称是日期,去掉了/ 字符。

    In [245]: np.genfromtxt(txt,dtype=None,names=True)
    Out[245]: 
    array([(4315, 228046, 227475, 239080), (19866, 22241, 27211, 25313),
           (23436, 23576, 23678, 24687), (23593, 58074, 61569, 58564),
           (23609, 334673, 313980, 246823)], 
          dtype=[('seqid', '<i4'), ('9192009', '<i4'), ('9262009', '<i4'), ('1032009', '<i4')])
    

    'columns/fields'按字段名访问:

    In [252]: data['9192009']
    Out[252]: array([228046,  22241,  23576,  58074, 334673])
    

    (稍后我会看一下删除的字符)

    type 不是结构化数组元素的有用测试。使用dtype

    In [247]: type(data[0])
    Out[247]: numpy.void
    
    In [248]: data.dtype
    Out[248]: dtype([('seqid', '<i4'), ('9192009', '<i4'), ('9262009', '<i4'), ('1032009', '<i4')])
    

    deletechars 参数让我可以控制是否删除/

    In [250]: np.genfromtxt(txt,dtype=None,names=True,deletechars='')
    Out[250]: 
    array([(4315, 228046, 227475, 239080), (19866, 22241, 27211, 25313),
           (23436, 23576, 23678, 24687), (23593, 58074, 61569, 58564),
           (23609, 334673, 313980, 246823)], 
          dtype=[('seqid', '<i4'), ('9/19/2009', '<i4'), ('9/26/2009', '<i4'), ('10/3/2009', '<i4')])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-12
      • 2017-08-03
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 2017-03-01
      • 2015-11-22
      相关资源
      最近更新 更多