python - 如何在 Python 中使用包装列读取数据?
问题描述
我正在尝试读取以下数据
0 3177 5
3.4275637990000E+33 7.7345239420000E+11 2.3294608630000E+21 2.0879655710000E+05
1.9252063604938E+06 2.0037575941018E+06-1.0000000000000E+00 0.0000000000000E+00
0.0000000000000E+00 1.1806662792899E+08 0.0000000000000E+00 1.6258263880000E+00
0.0000000000000E+00 3.0000000000000E+00 8.7143739363190E-06 1.1806108844692E+08
1.5216398828085E-04 1.5621014411210E+00 0.0000000000000E+00 2.9999238008221E+00
1.0979515673726E-05 1.1805809220990E+08 2.4154974448797E-04 1.5621006577022E+00
0.0000000000000E+00 2.9996256593782E+00 2.1960663497032E-05 1.1803176057951E+08
9.6633451293816E-04 1.5620942285096E+00 0.0000000000000E+00 2.9994037831384E+00
2.7670327547614E-05 1.1801096239579E+08 1.5341282126072E-03 1.5620891863088E+00
0.0000000000000E+00 2.9990524870828E+00 3.4865681847029E-05 1.1797792540807E+08
2.4357001431448E-03 1.5620811953515E+00 0.0000000000000E+00 2.9984939557312E+00
4.3934518613971E-05 1.1792547175142E+08 3.8674871654846E-03 1.5620681038247E+00
0.0000000000000E+00 2.9976271324793E+00
前 3 行是标题,后面的行是 6 个变量,这些变量一遍又一遍地重复,换句话说:
#Header line1
#Header line2
#Header line3
var1 var2 var3 var4
var5 var6 var1 var2
var3 var4 var5 var6
var1 var2 var3 var4
var5 var6 var1 var2
var3 var4 var5 var6
var1 var2 var3 var4
var5 var6 var1 var2
var3 var4 var5 var6
var1 var2 var3 var4
var5 var6
在 Python 中将所有内容收集到var1
单个变量中的最佳方法是什么?
任何想法都值得赞赏。
编辑:
请注意,数字并不总是用空格分隔。当右侧的数字为负数时会发生这种情况,因为它显示第 3 行介于第 2 列和第 3 列之间。
格式始终相同1.1234567890123E+12
,如果是负数,则-1.2345678901234E+12
. 即点前有 1 个数字,点后有 13 个,指数中有 2 个。
解决方案
我不确定这个解决方案一般有多好,但它适用于你的情况。
首先,您可能应该分别处理标题和文件的其余部分。这是数据部分。
使用 pandas 固定列文件阅读器读取数据read_fwf
,跳过前三行:
import pandas as pd
import numpy as np
data = pd.read_fwf("yourfile", skiprows=2, widths=[20,20,20,20])
从数据框中提取值,将它们展平:
values = data.values.reshape(1,-1)[0]
删除空单元格,重塑为六列:
values[~np.isnan(values)].reshape(-1,6)
推荐阅读
- windows - 从 Windows 命名管道读取/写入
- c# - 如何使用 Codedom 验证字段?
- javascript - 如何根据子表样式可见性隐藏父表
- angular - 无法从 firebase 实时数据库中获取键值
- c - 有符号类型是否假设为 32 位?
- c - 获取输入并将其打印到窗口的简单方法
- makefile - 如何使 Makefile 回显以使用`/bin/echo -e`?
- qt - 即使我按下 Key_F10 或 Key_F11 也会实现 Qt::Key_F9 案例
- loops - Fortran:带有实型参数的 do-loop
- sql - SQL Server 临时表检查性能