0

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

5 に答える 5

1

.pyxファイルはCythonファイルです。それらがインストールされていることがわかるかもしれませんが、ソースからライブラリをビルドしなかった場合はインストールされていない可能性があります。ただし、すべてのパンダソースはgithubで入手できます。のソースdatetime.pyxここにあります。

CythonはPythonに似ているため、ソースを参照してエラーの原因を突き止めようとしている場合は、Cythonのソースを確認すると便利な場合があります。ただし、通常のPythonのようにデバッグすることはできません。これは、そうではないためです。

于 2012-08-06T07:57:17.410 に答える
1

datetime.pyx を見つけるには、次から始めることをお勧めします。

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

Timestamp クラスの定義を見つけるには、以下から始めます。

grep -r 'class Timestamp' /usr/local/lib/python2.7/dist-packages/pandas-0<tab>
于 2012-08-06T07:55:13.007 に答える
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
于 2012-08-06T10:16:10.880 に答える
0

デフォルトでに設定されたコマンドスイッチに基づいて、間違ったフィールドを解析していたことがわかりましたNone。はっきりと考えていない:/

于 2012-08-06T10:21:14.420 に答える
0

潜在的なバグ レポートを GitHub (またはメーリング リスト) に投稿してください。ありがとう - これは GitHub よりも多くの回答を得ましたが。

于 2012-08-07T18:40:35.217 に答える