2015-05-30 127 views
1

我是從一個Python字典創建大熊貓數據幀:熊貓數據幀生成不一致

import numpy as np 
import pandas as pd 

obs_dict = { 
      'pos':[[0,0],[10,10]], 
      'vel':[[0,0],[0,0]], 
      'mass':np.array([10000,10000]) 
      } 

print pd.DataFrame(obs_dict) 

返回:

mass  pos  vel 
0 10000 [0, 0] [0, 0] 
1 10000 [10, 10] [0, 0] 

請注意,我有一個二維列表中的位置的項目(」 pos')和速度('vel')列。然而,當我用2D numpy的陣列替換2D名單:

obs_dict = { 
      'pos':np.array([[0,0],[10,10]]), 
      'vel':np.array([[0,0],[0,0]]), 
      'mass':np.array([10000,10000]) 
      } 

我得到一個異常:

Exception: Data must be 1-dimensional 

不幸的是,我使用的數據包含在numpy的陣列中,我不想將它轉換爲python列表,有什麼辦法可以使這項工作?

+0

列表的列表與2d numpy數組不同,我想你需要'np.array([[0,0],[10,10]])。tolist()'得到相同的行爲作爲列表 –

+0

你希望作爲列值存儲什麼?基本上它不會工作,試圖存儲二維數組,因爲它會檢查尺寸,你會發現,下面的作品,但我不知道這是你想要的:'obs_dict = { 'pos ':[np.array([[0,0],[10,10]])], 'vel':[np.array([[0,0],[0,0]])], '質量':[np.array([10000,10000])] } – EdChum

+0

@EdChum這導致只有一行,我想要兩行(每個位置,速度和質量) – abc

回答

0

在此代碼:

obs_dict = { 
     'pos':[[0,0],[10,10]], 
     'vel':[[0,0],[0,0]], 
     'mass':np.array([10000,10000]) 
     } 
print pd.DataFrame(obs_dict)` 

你只是得到了數據幀的一些對象列,嘗試dtypes:

tt = pd.DataFrame(obs_dict) 
tt.dtypes 

顯示:

mass  int64 
pos  object 
vel  object 
dtype: object 

我不認爲這可以做到。