快速读取python中以列分隔的文本数据

损坏的MyStack

我在包含许多变量的文本文件中有一个列分隔的数据。原始文件是在Fortran中创建的。每行中的值数量是固定的(即8)。例如,值“ -0.213897E-05”紧靠同一行上的其他七个值。空白列表示“ + ve号”。有8个这样的行,但是值的总数可以在62到64之间。然后大约有1000个这样的变量。

文件中一个变量的示例如下。

     -0.213897E-05 0.106493E-06-0.530198E-08 0.263970E-09-0.131423E-10 0.654316E-12-0.325765E-13 0.162189E-14
     -0.427794E-05 0.212986E-06-0.106040E-07 0.527940E-09-0.262846E-10 0.130863E-11-0.651530E-13 0.324377E-14
     -0.641691E-05 0.319479E-06-0.159059E-07 0.791910E-09-0.394269E-10 0.196295E-11-0.977294E-13 0.486566E-14
     -0.855588E-05 0.425972E-06-0.212079E-07 0.105588E-08-0.525692E-10 0.261726E-11-0.130306E-12 0.648755E-14
     -0.106949E-04 0.532465E-06-0.265099E-07 0.131985E-08-0.657114E-10 0.327158E-11-0.162882E-12 0.810944E-14
     -0.128338E-04 0.638958E-06-0.318119E-07 0.158382E-08-0.788537E-10 0.392590E-11-0.195459E-12 0.973132E-14
     -0.149728E-04 0.745452E-06-0.371138E-07 0.184779E-08-0.919960E-10 0.458021E-11-0.228035E-12 0.113532E-13
     -0.171118E-04 0.851945E-06-0.424158E-07 0.211176E-08-0.105138E-09 

我已经使用readlines()成功读取了文件,然后将字符串转换为浮点数,但结果缓慢且耗时。我还尝试了更慢的FortranFormat。文件的总大小约为2GB。

请提出一种读取这些值的本地方法。我在文件中大约有1000个这样的变量。

安迪·海登(Andy Hayden)

熊猫可以在这里提供帮助,其中有一节介绍了如何在文档中读取固定宽度的文件,将文本读取为StringIO(文件的工作原理相同)。

In [21]: colspecs = [(5 + 13 * i, 5 + 13 * (i + 1)) for i in range(8)]

In [22]: pd.read_fwf(StringIO(s), colspecs=colspecs, header=None)
Out[22]:
          0         1             2             3             4             5             6             7
0 -0.000002  0.000000 -5.301980e-09  2.639700e-10 -1.314230e-11  6.543160e-13 -3.257650e-14  1.621890e-15
1 -0.000004  0.000000 -1.060400e-08  5.279400e-10 -2.628460e-11  1.308630e-12 -6.515300e-14  3.243770e-15
2 -0.000006  0.000000 -1.590590e-08  7.919100e-10 -3.942690e-11  1.962950e-12 -9.772940e-14  4.865660e-15
3 -0.000009  0.000000 -2.120790e-08  1.055880e-09 -5.256920e-11  2.617260e-12 -1.303060e-13  6.487550e-15
4 -0.000011  0.000001 -2.650990e-08  1.319850e-09 -6.571140e-11  3.271580e-12 -1.628820e-13  8.109440e-15
5 -0.000013  0.000001 -3.181190e-08  1.583820e-09 -7.885370e-11  3.925900e-12 -1.954590e-13  9.731320e-15
6 -0.000015  0.000001 -3.711380e-08  1.847790e-09 -9.199600e-11  4.580210e-12 -2.280350e-13  1.135320e-14
7 -0.000017  0.000001 -4.241580e-08  2.111760e-09 -1.051380e-10           NaN           NaN           NaN

这些已被读取为浮点数


原始答案:read_csv可能对您有帮助,这对于分隔文本文件非常有用:

pd.read_csv('your_file.txt', sep=' ')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java中的套接字快速读取数据?

来自分类Dev

在python中快速读取HDF 5文件?

来自分类Dev

快速读取/写入大数据

来自分类Dev

快速读取CFDictionary中的值

来自分类Dev

在Common Lisp中快速读取CSV

来自分类Dev

如何快速读取和解析带有数字的文本文件(在C中)?

来自分类Dev

快速读取文件

来自分类Dev

从MPMoviePlayerController元数据中的UTF8字符串中快速读取

来自分类Dev

如何在应用程序目录中快速读取文件数据?

来自分类Dev

如何使用Perl快速读取文本文件?

来自分类Dev

无法在csv中分隔文本数据。(用@分隔文本,使其变为两列)

来自分类Dev

用Java快速读取大数据文件

来自分类Dev

用Java快速读取大数据文件

来自分类Dev

快速读取和解析连续数据的方法

来自分类Dev

在labview上从arduino快速读取数据但得到零

来自分类Dev

快速将文本数据读入数组

来自分类Dev

快速读取 JSON 文件中的 HTTPS 网址

来自分类Dev

如何清理熊猫数据框列中的文本数据

来自分类Dev

如何使用pandas读取文本数据?

来自分类Dev

Python中是否有一种快速的方法可以从文件中读取数据,用空行分隔?

来自分类Dev

快速读取短文本文件到字符串

来自分类Dev

同时从int数组快速读取/写入

来自分类Dev

是否可以快速读取授权文件

来自分类Dev

VBA剪贴板快速读取

来自分类Dev

快速读取远程通知的userInfo

来自分类Dev

快速读取控制台输入

来自分类Dev

快速读取doc文件C#

来自分类Dev

Java读取文本并将文本数据操作为整数

来自分类Dev

Java读取文本并将文本数据操作为整数