【发布时间】:2017-12-29 09:47:32
【问题描述】:
我正在阅读 Pandas “烹饪书”第 1 章,bikes.csv 示例。当我尝试将 parse_dates 更改为 ['Date'], dayfirst=True, index_col 时,日期如下: (行:在 [6] 中,在烹饪书的第 1 章中)
fixed_df = pd.read_csv('../data/bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')
我明白了: ValueError:“日期”不在列表中。 在我写到这里之前,我尝试了以下解决方案:
第一个: utf-8 bom problem
据我了解,utf-8 中的 bom 会产生一些问题并导致此错误。此外,“日期”行在阅读时被熊猫接受为tuple? (很抱歉,如果我用错误的词写了它,但这是我记得的,我不是 Python 专业人士)我尝试使用 suggestion 转换编码:
“utf-8-sig”编解码器给出一个没有 BOM 的 unicode 字符串:
fp = open("file.txt")
s = fp.read()
u = s.decode("utf-8-sig")
即使我没有收到任何错误,它也不起作用。
第二次: Vim 我尝试这些来改变编码
iconv -f UTF-8 -t ISO-8859-1 infile.txt > outfile.txt
还有这个,
vim +"set nobomb | set fenc=utf8 | x" filename.txt
它们都不起作用。
3rd:当我用vim打开文件时,我尝试更改文件编码。
set fileencoding=utf-8-sig(以及其他可能的编码,如 ANSI、ASCII 等)
我收到此错误
E213: 无法转换(加 ! 写不转换)
请你帮帮我,我想念哪里?非常感谢提前
【问题讨论】:
-
parse_dates=True不起作用? -
试试
pd.read_csv('../data/bikes.csv', sep=';', encoding='utf-8-sig', parse_dates=['Date'], dayfirst=True, index_col='Date')或pd.read_csv('../data/bikes.csv', sep=';', encoding='utf-16', parse_dates=['Date'], dayfirst=True, index_col='Date') -
pd.read_csv('https://raw.githubusercontent.com/jvns/pandas-cookbook/master/data/bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')适用于 Python 3.5 pandas 0.20.3。 -
@COLDSPEED 是的,parse_dates=True 不起作用。
-
@MaxU 我先尝试,utf-8-sig 它抛出'ValueError:'Date'不在列表中'。并尝试你的第二个建议,utf-16 它给出了错误:'UnicodeError: UTF-16 stream does not start with BOM'
标签: python pandas vim encoding utf-8