代码之家  ›  专栏  ›  技术社区  ›  BuGaGa

Pandas“Usecols与列不匹配,应为列,但未找到”

  •  1
  • BuGaGa  · 技术社区  · 2 周前

    这是我的数据文件:

    enter image description here

    我的文件可读,并且有列列表

    import pandas as pd
    
    df = pd.read_csv('data.csv')
    print(df.columns)
    

    enter image description here

    当我想阅读一列或几列时,为什么会出现错误?

    df2 = pd.read_csv('data.csv', usecols=['<TICKER>'])
    

    enter image description here

    1 回复  |  直到 2 周前
        1
  •  2
  •   mozway    2 周前

    您的CSV无效,您有双引号 " 包裹整条线。因此,它们被认为是一个单独的领域。

    您应该先删除它们,然后再尝试将文件读取为CSV。

    以下是预处理文件以删除外部 " :

    from io import StringIO
    import pandas as pd
    
    with open('data.csv') as csv:
        df = pd.read_csv(StringIO('\n'.join(l[:-1].strip('"') for l in csv)),
                         usecols=['<TICKER>'])
    

    输出

      <TICKER>
    0     AFLT
    1     AFLT
    

    另一种快速而肮脏的方法,假设您没有其他引用字段(即仅 " 在线路的外侧),可以考虑 " 作为一个额外的分隔符:

    df = pd.read_csv('data.csv', sep=',|"', usecols=['<TICKER>'],
                     engine='python', quoting=3)