【问题标题】:python pandas reading csv file error in column namepython pandas在列名中读取csv文件错误
【发布时间】:2016-11-22 22:50:33
【问题描述】:

我有一个 csv 文件,其中前 2 行的数据为:

NewDateTime ResourceName    
9/18/12 1:00    ANACACHO_ANA    
9/18/12 2:00    ANACACHO_ANA    

当我使用熊猫数据框阅读它时:

df = pd.read_csv(r'MyFile.csv')

我明白了

df1.columns
Index([u'NewDateTime', u'ResourceName', dtype='object')

但是,当我尝试时

df1['NewDateTime']

我得到错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 5: ordinal not in range(128)

我的 pycharm 解释器上的 df1['NewDateTime'] 也有一点破折号,就像 df1['-NewDateTime'] 一样,但是当我将它粘贴到这里时,破折号没有显示

【问题讨论】:

  • docs 开始:read_csv 确实 - 默认情况下 - 只处理逗号分隔的 csv 文件。我进一步假设您有一些编码问题。获取这个小的 csv 文件并手动重新创建它。问题是否仍然存在?当您简单地读入文件内容并通过 python 打印它们时会发生什么?有什么奇怪的吗?

标签: python csv pandas dataframe


【解决方案1】:

您的 CSV 文件似乎有 BOM (Byte Order Mark) signature,因此请尝试使用 'utf-8-sig''utf-16' 或其他编码与 BOM 进行解析:

df = pd.read_csv(r'MyFile.csv', encoding='utf-8-sig')

这是一个小演示:

In [18]: pd.read_csv(fn).columns
Out[18]: Index([u'?NewDateTime', u'ResourceName'], dtype='object')

In [19]: pd.read_csv(fn, encoding='utf-8-sig').columns
Out[19]: Index([u'NewDateTime', u'ResourceName'], dtype='object')

在我的 iPython 终端中,BOM 签名在 u'?NewDateTime' 中显示为 ? - 在您的情况下,它是一个破折号:df1['-NewDateTime']

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2020-01-29
    • 1970-01-01
    • 2015-10-17
    • 2022-11-03
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多