2013-10-14 58 views
2

我有3個數據集, 第一個名爲數據,包含我的數據;該表有5列和3行 - 每列代表一個特定的位置,可以用一組X,Y位置標識,每行代表一個特定的深度(Z)。 所述第二數據集保持5 X,Y位置(第一個數據集的列),而第三文件保持3個Z值,(數據表中的行)轉換數據文件的'X''Y''Z''數據'格式

生成我數據

import numpy as np 
Data = np.arange(1, 16).reshape(3, 5) #holds the 'data' I am interested in 
X = [0, 0, 1, 1, 2] #create 'X', 'Y' values 
Y = [0, 1, 0, 1, 0] 
XY = np.array((X, Y)).reshape(5, 2) # this is the format I have the 'X' and 'Y' values 
Z = [-1, -5, -10] 
z = np.array(Z) 

我現在想要將所有結合並具有X的新numpy的陣列(或大熊貓數據幀)中,Y,Z,例如對於給定的所述第一3行的表中的數據的數據格式 應該是:

X Y Z Data #this is a header, I just add it to make reading easier 
0 0 -1 1 
0 0 -5 6 
0 0 -10 11 
0 1 -1 2 
0 1 -5 7 
0 1 -10 12 

etc ....

如何做到這將是巨大 我使用熊貓創建正確的(多)索引列的思維,但我無法找到正確的方法這樣做

+0

您的'Z'列表中的條目少於'X'和'Y'列表,這是否正確? –

+0

@SaulloCastro是的,這是正確的 - 數據中的列數與X的數量相同,Y - 數據中的行數是Z的數量。 – Dimitris

+0

爲什麼投票關閉這個? –

回答

2

由X和Y建立一個多指標的任何提示,並使用疊加。

In [4]: columns = pd.MultiIndex.from_arrays([X, Y]) 

In [5]: df = DataFrame(Data, columns=columns, index=Z) 

In [6]: df 
Out[6]: 
     0  1  2 
     0 1 0 1 0 
-1 1 2 3 4 5 
-5 6 7 8 9 10 
-10 11 12 13 14 15 

In [7]: df1 = df.unstack().reset_index() 

In [8]: df1.columns = ['X', 'Y', 'Z', 'Data'] 

In [9]: df1 
Out[9]: 
    X Y Z Data 
0 0 0 -1  1 
1 0 0 -5  6 
2 0 0 -10 11 
3 0 1 -1  2 
4 0 1 -5  7 
5 0 1 -10 12 
6 1 0 -1  3 
7 1 0 -5  8 
8 1 0 -10 13 
9 1 1 -1  4 
10 1 1 -5  9 
11 1 1 -10 14 
12 2 0 -1  5 
13 2 0 -5 10 
14 2 0 -10 15 

我選擇做的,而不是讓他們爲三級多指標X,Y和Z適當的列(reset_index())。一般來說,這是更清潔和更有用。

+0

太棒了!正是我所需要的,並且比我想要做的要乾淨得多!謝謝! – Dimitris

相關問題