开发者社区> 问答> 正文

如何使用pandas将ascii dat文件作为float而不是python中的字符串导入

我有一个简单的ASCII dat文件,我想将其python作为numpy数组导入。dat文件(a.dat)看起来像:

1.0000000e+00 2.0000000e+00

3.0000000e+00 4.0000000e+00
我遇到的问题是我使用pandas.read_table导入文件

a=pd.read_table('a.dat',header=None)
当我通过使用转换为数组 a.values

结果是

array([[' 1.0000000e+00 2.0000000e+00'],

   ['   3.0000000e+00   4.0000000e+00']], dtype=object)

问题是浮点数被解释为字符串。我的实际数据文件比这个简单的矩阵大得多,因此将字符串转换为float的后续过程可能效率不高。

奇怪的是,我甚至无法说明dtype=np.float:

TypeError: Cannot cast array from dtype('O') to dtype('float64') according to the rule 'safe'

那么我可以直接将这种类似矩阵的dat文件导入numpyfloat数组吗?

展开
收起
一码平川MACHEL 2019-01-18 11:10:22 2944 0
1 条回答
写回答
取消 提交回答
  • 默认分隔符read_table是TAB,而不是空格。告诉它使用空间:

    pd.read_table('a.dat', header=None, sep='s')

    0 1

    0 1.0 2.0

    1 3.0 4.0

    2019-07-17 23:25:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data Pre-Processing in Python: 立即下载
即学即用的Pandas入门与时间序列分析 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载