我正在尝试在PiCloud上运行一些模型模拟,并用Pandas处理结果。 (PiCloud基本上是Amazon集群的接口,通过它我可以在Ubuntu 11.04虚拟环境中运行。)
有问题的命令似乎是:
fplf_df = pd.DataFrame(fpld, columns = var_name_list, index = sample_names_ordered)
fpld是一个dict(61个键是字符串,值是一个numpy数组(长度为1),其余为浮点数),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!
问题在于我在我的机器上运行它时工作正常,当我在亚马逊的服务器上进入虚拟环境并使用IPython手动创建DataFrame时,它可以正常工作。我还尝试通过提供不存在的索引参数或其他任意索引参数来重现错误,有些是成功的而其他的不是,但没有引发这个特定错误。在我看来(通过手动测试证实)它不应该与索引的长度完全重要,因为值只组成一行,所以当添加索引时它只是填充,这正是我的意思想。
究竟是什么导致了这个错误?我怀疑问题的根源在于Pandas,但我认为如果我知道Pandas级别可能出现的问题,我可以弄清楚从我的机器到虚拟环境的通信出了什么问题(或者无论真正的问题是什么)。
它的价值: 我的机器有pandas 0.9.1rc1(最新的Ubuntu 12.04更新,也许是今天早上),亚马逊env在10月中旬从一个鸡蛋中得到0.9.0(我认为)。在亚马逊上,来自终端的IPython和常规python调用似乎都在导入相同版本的Pandas。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:2)
问题是PiCloud's默认环境运行旧版本的pandas(0.3.0)会导致不兼容。最简单的解决方案是使用PiCloud' Ubuntu Precise Environment,它运行pandas 0.9.0。