簡體   English   中英

帶有MultiIndex列的dict中的Pandas Dataframe

[英]Pandas Dataframe from dict with MultiIndex columns

我今天才開始使用熊貓。 我找到了一個教程,可以在其中創建一個看起來像

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產生預期的數據幀,但沒有多索引列。 關於如何在通過字典創建的數據框中實現這些多索引列的想法嗎? 該文檔似乎只涉及具有多索引的numpy數組。 我將使用numpy,但是在並非每行長度相等的情況下,我在創建數組時遇到了問題。 我只得到一個一維的numpy數組。 如果影響任何內容,我的數據很可能是字符串。

如果您通過鍵'a', 'b', 'c'傳遞字典,則表明它們的列名為'a', 'b''c' 但是您的欄沒有這樣命名。 如果您使用的是MultiIndex,則您的列沒有單個名稱,而是一個名稱元組,每個級別一個。 因此,您需要為每列指定帶有完整元組的數據:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM