2017-07-30 94 views
3

我創建了一些np.arrays與他們做一些計算。 (全部具有相同的大小[100,1]) 現在我想創建一個熊貓數據框,並且每個數組都應該是該DF的一列。 數組的名稱應該是DataFrame的標題。如何用幾個numpy 1d數組創建一個pandas DataFrame?

在Matlab中我會做很容易像:

表=表(數組1,數組2,ARRAY3,...);

我該怎麼在Python中做到這一點?

在此先感謝!

+0

啊對不起,我誤解你的問題。您需要重新設計陣列以使用我提供的語法。 –

回答

5

比方說,這些都是你的陣列:

arr1, arr2, arr3 = np.zeros((3, 100, 1)) 

arr1.shape 
Out: (100, 1) 

您可以使用hstack來堆疊起來,並通過所產生的二維陣列數據框的構造函數:

df = pd.DataFrame(np.hstack((arr1, arr2, arr3))) 

df.head() 
Out: 
    0 1 2 
0 0.0 0.0 0.0 
1 0.0 0.0 0.0 
2 0.0 0.0 0.0 
3 0.0 0.0 0.0 
4 0.0 0.0 0.0 

或名稱的列作爲arr1arr2,...:

df = pd.DataFrame(np.hstack((arr1, arr2, arr3)), 
        columns=['arr{}'.format(i+1) for i in range(3)]) 

這給與numpy.concatenate

df.head() 
Out: 
    arr1 arr2 arr3 
0 0.0 0.0 0.0 
1 0.0 0.0 0.0 
2 0.0 0.0 0.0 
3 0.0 0.0 0.0 
4 0.0 0.0 0.0 
+0

謝謝,那很好用!頭部是否可以獲取數組名稱而不是0,1,2? – laurenz

+0

在Python中,對象的名稱只是引用。一個對象可能有多個名稱。因爲這樣就沒有簡單的方法來獲取變量的名字,比如'arr1'。你可以迭代'globals()'中的名字,但不建議這樣做。你的變量名是否有結構?如果是這樣,則很容易建立名稱而不是提取它們。 (像arr1,arr2,arr3 ...) – ayhan

+0

謝謝。不,他們是真名。所以我想我真的需要在Dataframe中重命名它們。 – laurenz

1

解決方案二維數組和DataFrame構造:

df = pd.DataFrame(np.concatenate([arr1, arr2, arr3], axis=1), columns= ['a','b','c']) 
相關問題