python pandas 读取列名中的 csv 文件错误

标签 python csv pandas dataframe

我有一个 csv 文件,前两行的数据为:

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

当我使用 pandas 数据框读取它时:

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'] 一样有一个小破折号,但是当我将它粘贴到这里时,破折号没有显示

最佳答案

您的 CSV 文件似乎有一个 BOM (Byte Order Mark) signature ,因此请尝试使用 'utf-8-sig''utf-16' 或其他 with 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['-新日期时间']

关于python pandas 读取列名中的 csv 文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38468750/

相关文章:

mysql - 使用 SQL 将数据库导出为 .CSV

csv - 如何在Grails CSV插件中将反斜杠作为特殊字符读取

python - 跳过 CSV 文件中的行

python - 如何聚合特定值的数据框?

python - 如何通过许多不同的 URL 获取唯一值

Python Pandas - 如果满足条件则更改组内的列

python - selenium - 单击按钮导出时遇到问题

python - 列表中的值发生了什么?

python - 如何将不等号和等号变成字符串

python - 如何在 python 中创建一个加密安全的随机数?