3

YAML ファイルで pandas DataFrame オブジェクトの定義を許可しようとしています。DataFrame オブジェクトはpickleableであるため、これは可能であると考えています。

私の簡素化された YAML ファイルは次のとおりで、「config.yaml」として保存されます。

!!python/object/new:pandas.DataFrame [[{'dimension1_id':58,'metric1':10},{'dimension1_id':50,'metric':10}]]

そして、次を使用してデータをPythonスクリプトにロードしています

f = open('config.yaml')
y = yaml.load(f)
print y

出力 (縮小) は次のとおりです。

File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2085, in __getattr__
if name in self.columns:
File "properties.pyx", line 55, in pandas.lib.AxisProperty.__get__ (pandas\lib.c:29240)
RuntimeError: maximum recursion depth exceeded while calling a Python object

これに関する唯一の情報源として、PyYAML ドキュメントを使用しています。

パンダが無限ループに陥っている理由を誰か推測できますか?

編集: DataFrames オブジェクトはデフォルトではシリアル化できないようで、余分な作業は価値があるよりも多くの問題のように見えます。以下は、単純な DataFrame オブジェクトから yaml_serializer によって作成される YAML ファイルです。

!!python/object/new:pandas.core.frame.DataFrame
state: !!python/object/new:pandas.core.internals.BlockManager
  state:
  - - !!python/object/apply:numpy.core.multiarray._reconstruct
      args:
      - &id001 !!python/name:pandas.core.index.Index ''
      - [0]
      - b
      state:
      - - 1
        - [!!python/long '2']
        - &id002 !dtype 'object'
        - false
        - [dfsd, id]
      - [null]
    - !!python/object/apply:numpy.core.multiarray._reconstruct
      args:
      - !!python/name:pandas.core.index.Int64Index ''
      - [0]
      - b
      state:
      - - 1
        - [!!python/long '2']
        - !dtype 'int64'
        - false
        - "\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0"
      - [null]
  - - - [!!python/long '23', !!python/long '123']
      - [!!python/long '7', !!python/long '123']
  - - !!python/object/apply:numpy.core.multiarray._reconstruct
      args:
      - *id001
      - [0]
      - b
      state:
      - - 1
        - [!!python/long '2']
        - *id002
        - false
        - [dfsd, id]
      - [null]
4

1 に答える 1

2

私は、DataFramesが「箱から出して」ピクル可能だとは思わない...to_pickle他のモジュールが見逃すパンダ固有のラングリングを行っています。このあたりの他の人たちは、これについてもっと知っています。

しかし、この小さなモジュールを使用して Series を yaml に保存することに成功しました。Series の dict として扱うことができるため、DataFrame を使用することも可能です。

于 2013-12-17T14:45:19.040 に答える