【问题标题】:Using genfromtxt to read in data with different column lengths使用 genfromtxt 读取不同列长的数据
【发布时间】:2016-07-07 05:52:01
【问题描述】:

有以下具有不同列长度的数据集:

5.0     0.4     0.92    11.45   44.18   33.66
3.2     4.92    7.2     11.73   46.98   118.63
3.6     11.43   14.32   8.88    71.3
1.99    9.12    11.71   15.56   20.24   
0.77    21.92   2.47    33.99   80.68
0.91    4.32    14.6    15.69   127.8
2.67    2.1     5.14    7.96    46.88
0.76    0.44    5.46    71.13   16.62
3.52    1.15    6.21    31.84   10.33
0.93    2.29    0.83    58.0    18.32
0.56    1.61    5.09    20.07   10.1
0.02    1.23    5.95    16.24
1.5     3.23    4.21    18.9

我尝试过使用 genfromtxt,但它只返回数据中的第一行。

data = np.genfromtxt(filename,dtype=float,usecols=range(6))

是否有一个我遗漏的论点我不知道可以解决这个问题?如果我不使用 usecols 参数,则数据将作为一列返回。设置 delimiter='' 返回相同的结果。理想情况下,我想读入数据,然后为每一列分开。

【问题讨论】:

    标签: python genfromtxt


    【解决方案1】:

    Numpy 数组必须是正则的,所以 genfromtxt 不是为此而做的。为了 此类数据pandas 可能更易于使用,默认使用 NaN 填充缺失值:

    In [7]: df.pd.read_csv('file.txt',sep=' *',engine='python',header=None)
    Out[7]: 
           0      1      2      3       4       5
    0   5.00   0.40   0.92  11.45   44.18   33.66
    1   3.20   4.92   7.20  11.73   46.98  118.63
    2   3.60  11.43  14.32   8.88   71.30     NaN
    3   1.99   9.12  11.71  15.56   20.24     NaN
    4   0.77  21.92   2.47  33.99   80.68     NaN
    5   0.91   4.32  14.60  15.69  127.80     NaN
    6   2.67   2.10   5.14   7.96   46.88     NaN
    7   0.76   0.44   5.46  71.13   16.62     NaN
    8   3.52   1.15   6.21  31.84   10.33     NaN
    9   0.93   2.29   0.83  58.00   18.32     NaN
    10  0.56   1.61   5.09  20.07   10.10     NaN
    11  0.02   1.23   5.95  16.24     NaN     NaN
    12  1.50   3.23   4.21  18.90     NaN     NaN
    

    您返回到带有df.values 的numpy 数组。

    【讨论】:

    • 感谢您正确读取文件!但是,当我使用 df.values 时,第一列给出了“当前不支持对象数组(a = df[0].values)”的错误。最后五列确实返回列表。你知道是什么导致了这个错误吗?
    • df 是一个数据框,a=df.value 是一个数组。 a[0] 是第一行,对 Dataframe 的访问是深奥的。 (第一行的 df.loc[0]。)
    猜你喜欢
    • 2014-07-27
    • 2018-01-06
    • 1970-01-01
    • 2013-12-28
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2018-06-01
    相关资源
    最近更新 更多