2017-06-06 89 views
1

我已經創建了一個MultiIndex,並且想要用MultiIndex作爲列標籤創建一個空的數據框,然後稍後填充矩陣,但它只是返回帶有元組的常規索引。此代碼是否可以將MultiIndex分配給空的DataFrame?

import pandas as pd 

sizes = ['0_200', '200_700', '700_1400', '1400_2300', '2300_4000'] 
years = [2016, 2020, 2025, 2030, 2035, 2040, 2045, 2050] 

multidx = pd.MultiIndex.from_product([sizes, years], names=['size', 'year']) 
print(multidx) 
df = pd.DataFrame(columns=multidx) 
print(df) 

產生

MultiIndex(levels=[['0_200', '1400_2300', '200_700', '2300_4000', '700_1400'], [2016, 2020, 2025, 2030, 2035, 2040, 2045, 2050]], 
      labels=[[0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3], [0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7]], 
      names=['size', 'year']) 

Empty DataFrame 
Columns: [(0_200, 2016), (0_200, 2020), (0_200, 2025), (0_200, 2030), (0_200, 2035), (0_200, 2040), (0_200, 2045), (0_200, 2050), (200_700, 2016), (200_700, 2020), (200_700, 2025), (200_700, 2030), (200_700, 2035), (200_700, 2040), (200_700, 2045), (200_700, 2050), (700_1400, 2016), (700_1400, 2020), (700_1400, 2025), (700_1400, 2030), (700_1400, 2035), (700_1400, 2040), (700_1400, 2045), (700_1400, 2050), (1400_2300, 2016), (1400_2300, 2020), (1400_2300, 2025), (1400_2300, 2030), (1400_2300, 2035), (1400_2300, 2040), (1400_2300, 2045), (1400_2300, 2050), (2300_4000, 2016), (2300_4000, 2020), (2300_4000, 2025), (2300_4000, 2030), (2300_4000, 2035), (2300_4000, 2040), (2300_4000, 2045), (2300_4000, 2050)] 
Index: [] 
[0 rows x 40 columns] 
我使用Spyder的3.1.4,3.6.0的Python在Windows 64位

。熊貓版本0.19.2。

+1

如果您打印df.columns,則爲多索引。或者嘗試'df.loc [0 ,:] = np.arange(40)',然後打印(df)。這可能就是如何打印一個空白的數據框。 – Psidom

+1

是的,它看起來像你試圖在列中創建一個多索引的空df。 –

回答

1

謝謝Psidom和斯科特波士頓。你說得對,multiindex就在那裏,它只是在數據框被填充之前打印成元組。我會在這裏留下這個問題,因爲在24小時前它對我來說真的很方便。 (雖然我是新來的,但如果這是一個非問題,我應該刪除它,請告訴我!)

相關問題