如何使用pandas在Python中将ascii dat文件作为浮点而不是字符串导入

时间:2019-01-16 04:35:02

标签: python pandas

我有一个简单的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文件导入numpy浮点数组?

任何评论和想法都将受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

read_table的默认分隔符是TAB,而不是空格。只需告诉它使用空间即可:

pd.read_table('a.dat', header=None, sep='\s')
#     0    1
#0  1.0  2.0
#1  3.0  4.0