2012-08-06 202 views
0

我收到一個錯誤,使用熊貓date_range函數。我已經給出了下面的跟蹤,並可以提供更多的上下文,但它似乎是我真的需要挖掘自己來解決的事情。熊貓:date_range錯誤

所以我想知道的是,如果有一種方法可以獲取跟蹤中提到的文件的源文件,特別是datetime.pyx,或Timestamp類的任何定義 - 我似乎無法找到它。我對Python非常青睞,不太瞭解包裹和來源的方式,但我希望如果我可以深入一點,我可以對此有所瞭解。

>>> d=process_files(args, options, False) 
Processing file K2.csv 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/tmp/py7041Jtp.py", line 158, in process_files 
    File "/tmp/py7041Jtp.py", line 81, in process_csv 
    File "/usr/local/lib/python2.7/dist-packages/pandas-0.8.1-py2.7-linux-x86_64.egg/pandas/tseries/index.py", line 1317, in date_range 
    freq=freq, tz=tz, normalize=normalize, name=name) 
    File "/usr/local/lib/python2.7/dist-packages/pandas-0.8.1-py2.7-linux-x86_64.egg/pandas/tseries/index.py", line 176, in __new__ 
    tz=tz, normalize=normalize) 
    File "/usr/local/lib/python2.7/dist-packages/pandas-0.8.1-py2.7-linux-x86_64.egg/pandas/tseries/index.py", line 254, in _generate 
    start = Timestamp(start) 
    File "datetime.pyx", line 87, in pandas.lib.Timestamp.__new__ (pandas/src/tseries.c:26892) 
    File "datetime.pyx", line 511, in pandas.lib.convert_to_tsobject (pandas/src/tseries.c:32019) 
    File "datetime.pyx", line 640, in pandas.lib._string_to_dts (pandas/src/tseries.c:33452) 
+0

什麼是'process_files()'? – 2012-08-06 07:49:38

+0

它將一堆csv文件解析爲數據框。雖然不是很重要 - 錯誤總是來源於熊貓的來源。 – scry 2012-08-06 08:25:50

回答

0

原來我只是解析錯誤的領域,即基於默認爲None命令交換機上。沒有清楚地思考:/

1

爲了找到datetime.pyx,我建議先從:

find /usr/local/lib/python2.7 -name 'datetime.pyx' 

要找到時間戳類的定義,我會先從:

grep -r 'class Timestamp' /usr/local/lib/python2.7/dist-packages/pandas-0<tab> 
+0

Yup試過這些,但沒有運氣 - 可能要抓取源碼 – scry 2012-08-06 08:05:50

+1

@roysc:[聽起來不錯](http://www.codinghorror.com/blog/2012/04/learn-to-read-the-source- luke.html)。祝你好運! – Lenna 2012-08-06 08:10:47

1

.pyx文件是Cython文件。您可能會發現它們已安裝,但如果您未從源代碼構建庫,它們可能不會。然而,所有的熊貓源都可以在github上找到。 datetime.pyx的來源是here

Cython看起來很像Python,所以如果您只是想瀏覽源代碼來找出導致錯誤的原因,您可能會發現查看Cython源代碼很有用。但是你不能像普通的Python那樣調試它,因爲它不是。

+0

優秀的點...我永遠不會記得Cython實際安裝的文件。 – Lenna 2012-08-06 07:59:15

1

爲了您的方便,我在下面複製了pandas.lib._string_to_dts的功能代碼。 根據你的追蹤,這是拋出異常的人。

cdef inline _string_to_dts(object val, pandas_datetimestruct* dts): 
    cdef: 
     npy_bool islocal, special 
     PANDAS_DATETIMEUNIT out_bestunit 
     int result 

    if PyUnicode_Check(val): 
     val = PyUnicode_AsASCIIString(val); 

    result = parse_iso_8601_datetime(val, len(val), PANDAS_FR_ns, 
            NPY_UNSAFE_CASTING, 
            dts, &islocal, &out_bestunit, &special) 
    if result == -1: 
     raise ValueError('Unable to parse %s' % str(val)) 

對我來說,它看起來像你pandas.date_range不能被解析到一個日期和您在process_csv代碼拋出一個異常ValueError像在下面的例子中提供輸入。

>>> import pandas 
>>> pandas.date_range('hello') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File ".../lib/python2.7/site-packages/pandas-0.8.2.dev_90842ba-py2.7-linux-x86_64.egg/pandas/tseries/index.py", line 1317, in date_range 
    freq=freq, tz=tz, normalize=normalize, name=name) 
    File "../lib/python2.7/site-packages/pandas-0.8.2.dev_90842ba-py2.7-linux-x86_64.egg/pandas/tseries/index.py", line 176, in __new__ 
    tz=tz, normalize=normalize) 
    File ".../lib/python2.7/site-packages/pandas-0.8.2.dev_90842ba-py2.7-linux-x86_64.egg/pandas/tseries/index.py", line 254, in _generate 
    start = Timestamp(start) 
    File "datetime.pyx", line 87, in pandas.lib.Timestamp.__new__ (pandas/src/tseries.c:26892) 
    File "datetime.pyx", line 511, in pandas.lib.convert_to_tsobject (pandas/src/tseries.c:32019) 
    File "datetime.pyx", line 640, in pandas.lib._string_to_dts (pandas/src/tseries.c:33452) 
ValueError: Unable to parse hello 
0

請在GitHub(或郵件列表)上發佈潛在的錯誤報告。謝謝 - 雖然這確實得到了比GitHub更多的答案。