繁体   English   中英

Pandas:IndexError 读取表格数据

[英]Pandas: IndexError reading tabular data

我有一个表格数据文件,如下所示:

  ID Ah Am  RAs  Ed Em  DEs   Vmag    U-B    B-V    V-I    e_    e_    e_    e_ _ _ _ _ mb n_ 2MASS
   1 10 42 57.6 -59 47 22.6 18.681         1.105  1.461 0.002       0.103 0.053 2 0 1 2       10425765-5947229
   2 10 42 57.7 -59 44 22.2 18.303                2.764 0.012             0.013 2 0 0 2
   3 10 42 57.7 -59 46 58.0 18.610                1.573 0.038             0.039 2 0 0 2       10425776-5946583
   4 10 42 57.8 -59 47 49.5 12.870         0.764  0.799 0.009       0.009 0.009 3 0 1 3       10425773-5947495
   5 10 42 57.8 -59 44 03.4 18.815         1.072  1.433 0.017       0.110 0.043 2 0 1 2
   6 10 42 57.8 -59 48 29.3 18.697                1.304 0.014             0.019 2 0 0 2       10425778-5948293
   7 10 42 57.8 -59 44 08.5 17.817         1.700  2.384 0.011       0.108 0.013 2 0 1 2       10425786-5944083

我正在尝试获取并打印出标记为Vmag的列中的所有值,但是当我尝试

df = pd.read_table('Hur_et_al_2012_catalog/table1.dat')
print(df.iloc[:, 7])

我得到了IndexError 任何建议将不胜感激。

看起来您有一个固定宽度的格式化表格, pandas 有一个 function 来阅读这些通常不需要额外调整的内容: pd.read_fwf

鉴于:

text = '''  ID Ah Am  RAs  Ed Em  DEs   Vmag    U-B    B-V    V-I    e_    e_    e_    e_ _ _ _ _ mb n_ 2MASS
   1 10 42 57.6 -59 47 22.6 18.681         1.105  1.461 0.002       0.103 0.053 2 0 1 2       10425765-5947229
   2 10 42 57.7 -59 44 22.2 18.303                2.764 0.012             0.013 2 0 0 2
   3 10 42 57.7 -59 46 58.0 18.610                1.573 0.038             0.039 2 0 0 2       10425776-5946583
   4 10 42 57.8 -59 47 49.5 12.870         0.764  0.799 0.009       0.009 0.009 3 0 1 3       10425773-5947495
   5 10 42 57.8 -59 44 03.4 18.815         1.072  1.433 0.017       0.110 0.043 2 0 1 2
   6 10 42 57.8 -59 48 29.3 18.697                1.304 0.014             0.019 2 0 0 2       10425778-5948293
   7 10 42 57.8 -59 44 08.5 17.817         1.700  2.384 0.011       0.108 0.013 2 0 1 2       10425786-5944083'''

正在做:

from io import StringIO

df = pd.read_fwf(StringIO(text))
print(df.iloc[:, 7])
print(df)

# Output:
0    18.681
1    18.303
2    18.610
3    12.870
4    18.815
5    18.697
6    17.817
Name: Vmag, dtype: float64

   ID  Ah  Am   RAs  Ed  Em   DEs    Vmag  U-B    B-V    V-I     e_  e_.1   e_.2   e_.3  _  _.1  _.2  _.3  mb  n_             2MASS
0   1  10  42  57.6 -59  47  22.6  18.681  NaN  1.105  1.461  0.002   NaN  0.103  0.053  2    0    1    2 NaN NaN  10425765-5947229
1   2  10  42  57.7 -59  44  22.2  18.303  NaN    NaN  2.764  0.012   NaN    NaN  0.013  2    0    0    2 NaN NaN               NaN
2   3  10  42  57.7 -59  46  58.0  18.610  NaN    NaN  1.573  0.038   NaN    NaN  0.039  2    0    0    2 NaN NaN  10425776-5946583
3   4  10  42  57.8 -59  47  49.5  12.870  NaN  0.764  0.799  0.009   NaN  0.009  0.009  3    0    1    3 NaN NaN  10425773-5947495
4   5  10  42  57.8 -59  44   3.4  18.815  NaN  1.072  1.433  0.017   NaN  0.110  0.043  2    0    1    2 NaN NaN               NaN
5   6  10  42  57.8 -59  48  29.3  18.697  NaN    NaN  1.304  0.014   NaN    NaN  0.019  2    0    0    2 NaN NaN  10425778-5948293
6   7  10  42  57.8 -59  44   8.5  17.817  NaN  1.700  2.384  0.011   NaN  0.108  0.013  2    0    1    2 NaN NaN  10425786-5944083

所以,试试pd.read_fwf

df = pd.read_fwf('Hur_et_al_2012_catalog/table1.dat')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM