2017-06-06 15 views
1

私はMultiIndexを作成し、MultiIndexを列ラベルとして使用して空のデータフレームを作成し、後でこの行列に入力したいが、タプルを含む通常のインデックスを返します。このコード空のDataFrameにMultiIndexを割り当てることはできますか?

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) 

は、私はスパイダー3.1.4 Windows上で、Pythonの3.6.0は、64-ビットを使用してい

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] 

が得られます。パンダバージョン0.19.2。

+1

df.columnsを印刷するとマルチインデックスになります。あるいは 'df.loc [0 ,:] = np.arange(40)'を試してからprint(df)してみてください。空のデータフレームがどのように印刷されるかは、たぶんそうです。 – Psidom

+1

これは、マルチインデックスの空のdfを列に作成しようとする試みに成功したようです。 –

答えて

1

ありがとうございますPsidomとScott Boston。マルチインデックスがそこにあるのは間違いありません。データフレームがいっぱいになる前にタプルとして印刷されます。私は約24時間前に私にとって本当に便利だったので、ここでこの質問を残します。 (私はここでは新しくなっていますので、これは非質問としてカウントし、削除する必要がありますので教えてください)

関連する問題