Pandas ValueError:'日期'不在列表中

时间:2017-07-23 21:04:19

标签: python pandas vim encoding utf-8

我正在阅读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会产生一些问题并导致此错误。另外,“Dates”行在阅读时被熊猫接受为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

它们都不起作用。

第3次:当我使用vim打开文件时,我尝试更改文件编码。

set fileencoding=utf-8-sig(以及其他可能的编码,如ANSI,ASCII等) 我收到此错误

  

E213:无法转换(添加!无需转换即可写入)

请你帮帮我,我在哪里错过?非常感谢提前

1 个答案:

答案 0 :(得分:5)

使用您提供的网址

url = 'http://donnees.ville.montreal.qc.ca/dataset/f170fecc-18db-44bc-b4fe-5b0b6d2c7297/resource/d54cec49-349e-47af-b152-7740056d7311/download/comptagevelo2012.csv'

df = pd.read_csv(url, sep=',', parse_dates={'datetime':[0, 1]}, index_col='datetime')

df.head()

给出

            Rachel / Papineau  Berri1  Maisonneuve_2  Maisonneuve_1  Brébeuf  \
datetime                                                                       
2012-01-01                 16      35             51             38      5.0   
2012-02-01                 43      83            153             68     11.0   
2012-03-01                 58     135            248            104      2.0   
2012-04-01                 61     144            318            116      2.0   
2012-05-01                 95     197            330            124      6.0   

我更改了sepencoding参数,因为该文件中的分隔符是逗号,编码是utf-8read_csv的默认值)。有一个未命名的时间列,您也可以使用它来包含在解析中。在这个例子中,我认为它们都是零,但在其他情况下这可能是有用的。