2017-04-25 74 views
0

我有兩個矩陣:numpy方陣和一個熊貓多指數方陣。它們的尺寸相同。這個想法是將numpy的價值轉化爲多索引熊貓矩陣,以更輕鬆地導航到數據中。將numpy數組複製到Panda multiindex(大小相同)

我的矩陣大概是100 000 x 100 000. 而我的熊貓矩陣有三級索引。

tuples = [('1','A','a'), ('1','A','b'), ('1','A','c'), ('1','B','a'), ('1','B','b'), ('1','B','c'), ('2','A','a'), ('2','A','b'), ('2','B','a')] 
index = pd.MultiIndex.from_tuples(tuples, names=['geography', 'product','activity']) 
df = pd.DataFrame(index=index, columns=index) 

geography     1     2  
product      A  B  A  B 
activity     a b c a b c a b a 
geography product activity       
1   A  a   0 0 0 0 0 0 0 0 0 
        b   0 0 0 0 0 0 0 0 0 
        c   0 0 0 0 0 0 0 0 0 
      B  a   0 0 0 0 0 0 0 0 0 
        b   0 0 0 0 0 0 0 0 0 
        c   0 0 0 0 0 0 0 0 0 
2   A  a   0 0 0 0 0 0 0 0 0 
        b   0 0 0 0 0 0 0 0 0 
      B  a   0 0 0 0 0 0 0 0 0 

np.random.rand(9,9) 
array([[ 0.27302806, 0.33926193, 0.01489047, 0.71959889, 0.43500806, 
     0.03607795, 0.03747561, 0.43000199, 0.8091691 ], 
     [ 0.96626878, 0.37613022, 0.7739084 , 0.16724657, 0.01144436, 
     0.0107722 , 0.73513494, 0.13305542, 0.2910334 ], 
     [ 0.00622779, 0.93699165, 0.62725798, 0.25009469, 0.14010666, 
     0.61826728, 0.72060106, 0.58864557, 0.29375779], 
     [ 0.14937979, 0.45269751, 0.68450964, 0.15986812, 0.69879559, 
     0.06573519, 0.57504452, 0.49540882, 0.77283616], 
     [ 0.60933817, 0.2701683 , 0.69067959, 0.22806386, 0.79456502, 
     0.75107457, 0.2805325 , 0.27659171, 0.33446821], 
     [ 0.82860687, 0.27055835, 0.37684942, 0.18962783, 0.59885119, 
     0.31246936, 0.94522335, 0.53487273, 0.00611481], 
     [ 0.27683582, 0.23653112, 0.41250374, 0.5024068 , 0.27621212, 
     0.81379001, 0.6704781 , 0.87521485, 0.04577144], 
     [ 0.95516958, 0.21844023, 0.86558273, 0.52300142, 0.91328259, 
     0.7587479 , 0.15201837, 0.15376074, 0.12092142], 
     [ 0.36835891, 0.0381736 , 0.36473176, 0.30510363, 0.19433639, 
     0.43431018, 0.00112607, 0.35334684, 0.82307449]]) 

如何將numpy矩陣的值放入熊貓多指數矩陣中。構造的兩個矩陣具有相同的結構,即numpy矩陣是沒有標籤索引的熊貓。

我發現了十幾個例子,將multiindex df轉換爲numpy數組,但不是以這種方式。只有一個3 dimensional numpy array的例子,但我的不是一個3-D np數組。

+0

'df [:] = np.random.rand(9,9)'? – Divakar

+0

我的SHAME!是的,完美。我正在尋找更復雜的。 – Cyril

+0

確保數據順序與預期一樣。 – Divakar

回答

1

感謝Divakar。 東西,只是df[:] = np.random.rand(9,9),這是沒問題的。

相關問題