2016-02-24 178 views
0

我剛開始使用熊貓今天。我發現了一個教程,我可以創建一個看起來像從多維數據集列表的字典中獲取熊貓數據框

foo one two 
bar a b c 
2  0 0 0 
4  0 0 0 
6  0 0 0 

從代碼

import numpy as np 
import pandas as pd 

arrays = [np.hstack([ ['one']*1, ['two']*2]), ['a', 'b', 'c']] 
columns = pd.MultiIndex.from_arrays(arrays, names=['foo', 'bar']) 
df = pd.DataFrame(np.zeros((3,3)), columns=columns, index=['2','4','6']) 
print df 

我想重複同樣的事情,但創建一個字典數據框的表。

d={'a':[0,0,0], 'b':[0,0,0], 'c':[0,0,0]} 
dd = pd.DataFrame(d, columns=columns, index=['2','4','6']) 
print dd 

但是我得到

foo one two  
bar a b c 
2 NaN NaN NaN 
4 NaN NaN NaN 
6 NaN NaN NaN 

省略columns=columns產生一個數據幀預期,但沒有multiindexed列。關於如何在從字典創建的數據框中實現這些多索引列的想法?該文檔似乎只包含具有多重索引的numpy數組。我會使用numpy,但是當創建數組的時候,如果不是每一行的長度都相等,我會遇到問題。我只得到一個1D numpy數組。我的數據大多數可能是字符串,如果這影響任何東西。

回答

1

如果您通過密碼'a', 'b', 'c'的字典,您告訴它列名爲'a', 'b''c'。但是你的列沒有被命名。如果您使用的是MultiIndex,那麼您的列沒有單一名稱,而是一個名稱元組,每個級別都有一個名稱。因此,您需要爲每列指定具有完整元組的數據:

d={('one', 'a'):[0,0,0], ('two', 'b'):[0,0,0], ('two', 'c'):[0,0,0]} 
+0

謝謝。我認爲這是沿着這些線,但我不知道如何指定名稱。 – Shatnerz