![](/img/trans.png)
[英]Dict of dict of dicts to pandas dataframe - changing multiindex rows to be columns
[英]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.