【问题标题】:Python pandas read_table whitespace delimiterPython pandas read_table 空格分隔符
【发布时间】:2015-11-06 16:44:31
【问题描述】:

我有这个示例 txt 文件,如下所示:

ACW00011604  17.1167  -61.7833   10.1    ST JOHNS COOLIDGE FLD
ACW00011647  17.1333  -61.7833   19.2    ST JOHNS
E000041196  25.3330   55.5170   34.0    SHARJAH INTER. AIRP

等等……

我需要的是像这样加载这个文件:

 X  X.1 X.3 X.4 X.5
ACW00011604 17.1167 -61.7833    10.1    ST   JOHNS COOLIDGE FLD
ACW00011647 17.1333 -61.7833    19.2    ST JOHNS

我尝试将 pandas 导入为 pd

ds=pd.read_table("st.txt", delim_whitespace=True, header=None)

但它的工作方式如下:

X               X.1      X.3      X.4    X.5      X.6     X.7      X.8
ACW00011604  17.1167  -61.7833   10.1    ST      JOHNS   COOLIDGE  FLD
ACW00011647  17.1333  -61.7833   19.2    ST      JOHNS
E000041196   25.3330   55.5170   34.0    SHARJAH INTER.  AIRP

我该如何处理?

【问题讨论】:

    标签: python pandas delimiter


    【解决方案1】:

    使用read_fwf 读取固定宽度的文件格式并传递参数header=None 和您想要的列名:

    In [18]:
    import io
    import pandas as pd
    t="""ACW00011604  17.1167  -61.7833   10.1    ST JOHNS COOLIDGE FLD
    ACW00011647  17.1333  -61.7833   19.2    ST JOHNS
    E000041196  25.3330   55.5170   34.0    SHARJAH INTER. AIRP"""
    df = pd.read_fwf(io.StringIO(t), header=None, names=['X','X.1','X.3','X.4', 'X.5'])
    df
    
    Out[18]:
                 X      X.1      X.3   X.4                    X.5
    0  ACW00011604  17.1167 -61.7833  10.1  ST JOHNS COOLIDGE FLD
    1  ACW00011647  17.1333 -61.7833  19.2               ST JOHNS
    2   E000041196  25.3330  55.5170  34.0    SHARJAH INTER. AIRP
    

    所以在你的情况下应该可以:

    ds=pd.read_fwf("st.txt", header=None, names=['X','X.1','X.3','X.4', 'X.5'])
    

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 2021-05-06
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      相关资源
      最近更新 更多