【问题标题】:Loading a text files with unequal columns加载具有不相等列的文本文件
【发布时间】:2018-09-04 20:55:43
【问题描述】:

我有一个包含非结构化数据的文本文件。该文件包含 150k 行,如

M  Jackson                              1                                             $
F  Fiza                                 1                                             $
M  Aaro                                          41                                   $
M  Micheal                      226 4   2   211                               6       $

第一列是性别信息,第二列是姓名,第三列可以有 1 个或多个数字,以空格分隔,代表该人可能属于的可能国家。 (每个国家都有一个代码)。符号 $ 是行尾。

我必须将数据放入 numpy 数组。当我将文本的行扫描到数组时,它会显示错误,因为它的列不相等。

data = np.loadtxt(filename, dtype= 'str', delimiter = ' ')

在这种情况下如何将数据扫描到数组中?空格也不是恒定的,但数字由空格分隔。 对于我的数据,第一行有 3 个值,第 4 行有 6 列。后来我将空列设为零以使其列数相等并进行特征提取。

【问题讨论】:

    标签: python-3.x file numpy text


    【解决方案1】:

    numpy 加载器不能很好地处理丢失的数据。但在genfromtxt 中,您可以指定字段宽度。

    In [103]: txt = """one 2 3
         ...: two   4 5
         ...: """.splitlines()
    
    
    In [105]: np.genfromtxt(txt, delimiter=[3,2,2,2])
    Out[105]: 
    array([[nan,  2.,  3., nan],
           [nan, nan,  4.,  5.]])
    
    In [109]: np.genfromtxt(txt, delimiter=[3,2,2,2],dtype=str,encoding=None)
    Out[109]: 
    array([['one', ' 2', ' 3', ''],
           ['two', '  ', ' 4', ' 5']], dtype='<U3')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多