.dat 文件空中的缺失值导致读取文件时出错

问题描述

我有一个 .dat 文件,我试图对其进行分析。这是代码

catalog=ascii.read("table6.dat",Reader=ascii.NoHeader,guess=False,fast_reader=False,delimiter='\s')

问题是文件中有缺失值(空),这不允许我对数据进行分析。

输出:

astropy.io.ascii.core.InconsistentTableError: Number of header columns (23) inconsistent with data columns (24) at data line 3

将分隔符从 '\s' 更改为 '\n' 给了我这个

                                                                 col1                                                                
-------------------------------------------------------------------------------------------------------------------------------------
  1  33 Psc           28  00 05 20.1  -05 42 27   93.73  -65.93  111    -6.6    -13    89  (44)    -3   45 -101   -16.7   37.4   24.6
  2  ADS 48A          38  00 05 41.2   45 48 35  114.64  -16.32   11    -9.0    886  -207 (737)    -4   10   -3   -33.6  -31.1  -15.4
  3   5 Cet          352  00 08 12.0  -02 26 52   98.32  -63.23  140    -0.4      6    -4  (77)    -9   62 -125    -2.1   -4.1   -1.4
  4  BD Cet         1833  00 22 46.7  -09 13 49  100.84  -70.86   71    -4.8      3   -51 (409)    -4   23  -67     8.1  -15.9   -0.9
  5  13 Cet A       3196  00 35 14.8  -03 35 34  112.87  -66.15   21    10.6    410   -21 (409)    -3    8  -19   -36.0  -19.3  -12.7
  6  FF And               00 42 47.3   35 32 50  120.95  -27.29   24    -0.5    250    90 (380)   -11   18  -11   -26.3  -11.6    8.6
  7  zeta And       4502  00 47 20.3   24 16 02  121.73  -38.60   31   -23.7   -100   -83 (737)   -13   21  -19    26.5  -14.0    5.2
  8  CF Tuc         5303  00 52 58.3  -74 39 07  302.81  -42.48   54     0.5     19    28 (409)    22  -33  -36    -6.6    1.0   -5.5
  9  BD+25 161      6286  01 04 07.1   26 35 13  126.44  -36.20   55   -20.0    -12   -18 (737)   -26   36  -32    13.7  -13.5    7.7
 10  AY Cet         7672  01 16 36.2  -02 30 01  137.72  -64.65   67   -30.1   -108   -59 (409)   -21   19  -60    46.6   -2.7   15.6
                                                                                                                                  ...
196  IM Peg       216489  22 53 02.3   16 50 28   86.36  -37.48   50   -12.8    -19   -24 (737)     3   40  -30     6.3  -11.9    6.0
197  AZ Psc       217188  22 58 52.7   00 18 58   73.71  -51.46  260   -20.5     39    16 (409)    45  156 -203   -54.2  -12.3    5.5
198  TZ PsA       217344  23 00 27.7  -33 44 34   10.64  -65.25   46    36.9    -44  -132 (409)    19    4  -42    32.1  -21.4  -28.2
199  KU Peg       218153  23 05 29.3   26 00 33   95.03  -31.05  950   -80.4     51    -9 (737)   -71  811 -490  -171.4 -159.1  -78.5
200  KZ And       218738  23 09 57.4   47 57 30  105.90  -11.53   23    -6.9    157    -5 (737)    -6   22   -5   -12.7  -12.2   -5.5
201  RT And               23 11 10.0   53 01 33  108.06   -6.92   95    20.0    -12   -18 (737)   -29   90  -11     1.5   20.8   -7.9
202  SZ Psc       219113  23 13 23.8   02 40 32   80.66  -51.96  125    12.0     12    29 (737)    13   76  -98   -13.5   17.2   -3.5
203  EZ Peg               23 16 53.4   25 43 09   97.58  -32.45   83   -27.2    -70    13 (409)    -9   69  -45    24.8  -10.9   28.1
204  lambda And   222107  23 37 33.9   46 27 29  109.90  -14.53   23     6.8    162  -421 (737)    -8   21   -6    -1.8   -6.7  -49.2
205  KT Peg       222317  23 39 31.0   28 14 47  104.22  -32.00   25    -3.1    299   226 (737)    -5   21  -13   -41.9   -6.0   13.8
206  II Peg       224085  23 55 04.0   28 38 01  108.22  -32.62   29   -18.1    574    27 (737)    -8   24  -16   -66.5  -48.1   -3.8

但标题不能单独分配给列。 在第三列的第 6、201、203 行中存在缺失值(显示值)。 如果可以为这些缺失的空字段提供错误值,则问题可以解决。

我找不到任何与此相关的文档...

解决方法

问题是表解析器根本无法明确知道数据文件的列边界在哪里。您的表数据采用固定宽度格式,这意味着每一列都位于每行的特定字符范围内。您需要以某种方式指定这些边界。

这里用示例记录了这一点: https://docs.astropy.org/en/latest/io/ascii/fixed_width_gallery.html#fixed-width-gallery

如果可以修改文件,最简单的方法是添加标题行,告诉解析器列边界是什么。例如:

Col1   Col2    Col3 Col4
---- --------- ---- ----
 1.2   "hello"    1    a
 2.4 's worlds    2    2

如果您不能修改文件本身,那么您可以明确指定列的开始和停止,如本节中的第二个示例所示:https://docs.astropy.org/en/latest/io/ascii/fixed_width_gallery.html#fixedwidthnoheader

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...