PiCloud でいくつかのモデル シミュレーションを実行し、その結果を Pandas で処理しようとしています。(PiCloud は基本的に、Amazon クラスターへのインターフェイスであり、これを介して Ubuntu 11.04 仮想環境で実行しています)。
問題のあるコマンドは次のようです。
fplf_df = pd.DataFrame(fpld, columns = var_name_list, index = sample_names_ordered)
fpld は dict (文字列である 61 個のキー、および値は 1 つの numpy 配列 (長さ 1) で残りは float) であり、var_name_list および sample_names_ordered は文字列のリストまたは配列です。
コマンドを含むスクリプトを実行すると、すべての PiCloud ジョブが次のエラーで終了します。
Traceback (most recent call last):
File "/usr/local/picloud/.employee/pimployee/job_util.py", line 119, in process_job
result = func(*args, **kwargs)
File "/home/itchy/ecopetrol/ec-working/pecube_scripts/run_eceS1_cloud.py", line 297, in run_pecube_map
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 125, in __init__
sdict, columns, index = self._init_dict(data, index, columns, dtype)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 176, in _init_dict
v = Series(v, index=index)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/series.py", line 172, in __new__
subarr.index = index
File "/usr/local/lib/python2.7/dist-packages/pandas/core/series.py", line 193, in _set_index
raise AssertionError('Lengths of index and values did not match!')
AssertionError: Lengths of index and values did not match!
バグは、自分のマシンで実行すると正常に動作し、Amazon のサーバーの仮想環境に ssh して IPython を使用して DataFrame を手動で作成すると動作することです。また、存在しないインデックス引数、またはその他の任意のインデックス引数を指定してエラーを再現しようとしましたが、成功するものとそうでないものがありますが、この特定のエラーを発生させるものはありません。値が1つの行のみを構成するため、インデックスの長さが正確に何であるかは問題ではないように思えます(手動テストで確認)。
では、このエラーの正確な原因は何ですか? 問題の原因が Pandas にあるとは思えませんが、Pandas レベルで何が問題になっているのかがわかれば、自分のマシンから仮想環境への通信で何が問題になっているのかを突き止めることができると思います (または本当の問題が何であれ)。
価値があるのは:私のマシンにはpandas 0.9.1rc1(最新の最先端のUbuntu 12.04アップデート、おそらく今朝)があり、Amazon envには10月中旬の卵からの0.9.0(私は思う)があります。Amazon では、端末からの IPython と通常の python 呼び出しは、同じバージョンの Pandas をインポートしているようです。
どんな助けでも大歓迎です。
ありがとう!