2012-08-06 5 views
0

팬더 date_range 기능을 사용하는 중에 오류가 발생했습니다. 나는 아래의 추적을했고, 더 많은 맥락을 제공 할 수 있지만, 실제로 해결할 자신을 파헤쳐야 할 무언가처럼 보입니다.팬더 : date_range 오류

그래서 내가 알고 싶은 것은 추적에서 언급 한 파일, 특히 datetime.pyx 또는 Timestamp 클래스가 정의 된 곳에서 소스를 얻는 방법이 있다면 찾을 수없는 것입니다. 저는 파이썬으로 꽤 초록색이고 패키지와 소스를 잘 이해하지 못합니다.하지만 조금 더 깊게 파헤 치면이 점을 밝힐 수 있기를 바랍니다.

>>> 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() 란 무엇입니까? –

+0

많은 csv 파일을 데이터 프레임으로 구문 분석합니다. 정말로 중요하지는 않지만 - 오류는 항상 팬더 소스에서 발생합니다. – scry

답변

0

난 그냥 None에 기본값 명령 스위치를 기반으로, 잘못된 필드를 분석했다 밝혀졌습니다. 명확하게 생각하지 못함 :/

1

datetime.pyx를 찾으려면, I로 시작하는 게 좋을 것 : 타임 스탬프 클래스의 정의를 찾으려면

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

, 나는 시작 했죠과 :

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

그래,하지만 행운을 빕니다 - 아마도 소스를 잡으려고 – scry

+1

@roysc : [소리 좋은] (http://www.codinghorror.com/blog/2012/04/learn-to-read-the-source- luke.html). 행운을 빌어 요! – Lenna

1

.pyx 파일은 Cython 파일입니다. 라이브러리가 설치되어있을 수도 있지만 소스에서 라이브러리를 빌드하지 않은 경우에는 그렇지 않을 수도 있습니다. 그러나 모든 팬더 소스는 github에서 사용할 수 있습니다. datetime.pyx의 출처는 here입니다.

Cython은 Python과 유사하므로 오류의 원인을 찾기 위해 소스를 탐색하려는 경우 Cython 소스를 보는 것이 유용 할 수 있습니다. 하지만 일반 Python과 같이 디버깅 할 수는 없습니다.

+0

뛰어난 점 ... Cython이 실제로 설치하는 파일을 기억할 수 없습니다. – Lenna

1

편의를 위해 아래 기능 코드 pandas.lib._string_to_dts을 복사했습니다. 역 추적을 기반으로이 예외를 throw하는 것입니다. 당신이 날짜로 구문 분석 process_csv의 코드는 아래의 예처럼 ValueError 예외를 throw 할 수없는 pandas.date_range에 입력을 제공하는 것처럼 나에게

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)) 

가 보인다.

>>> 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보다 더 많은 답변을 얻었지만 말입니다.