簡體   English   中英

從嵌套dict創建pandas數據幀,外鍵為df索引和內鍵列標題

[英]Create pandas dataframe from nested dict with outer keys as df index and inner keys column headers

我有一個嵌套字典,如下所示

dictA = {X:{A: 0.2, B:0.3, C:0.4} ,Y:{A: 0.05, B:0.8, C:0.1},Z:{A: 0.15, B:0.6, C:0.25}}

我想創建一個數據框,其中第一個鍵對應於索引,嵌套字典的鍵是列標題。 例如,

     A    B    C
  X  0.2  0.3  0.4 
  Y  0.05 0.8  0.1
  Z  0.15 0.6  0.25

我知道我可以從外部字典中將密鑰拉出到列表中(使用列表解析):

index_list = [key for key in dictA.iterkeys()]

然后將嵌套的詞典轉換為單個詞典:

dict_list = [value for value in dictA.itervalues()]
final_dict = {k: v for dict in dict_list for k, v in dict.items()}

最后我可以創建我的df

df = pd.DataFrame(final_dict, index = index_list)

問題是我需要將正確的值映射回正確的索引,這在普通的字典更改時很難。

我想有一個完全不同的,比我上面建議的更有效的方式,請幫忙嗎?

使用from_dict並傳遞orient='index'它旨在處理這種形式的dict:

In [350]:
pd.DataFrame.from_dict(dictA, orient='index')

Out[350]:
      A     C    B
X  0.20  0.40  0.3
Y  0.05  0.10  0.8
Z  0.15  0.25  0.6

您可以簡單地將dictA轉換為DataFrame,然后進行轉置,使列成為索引並將列索引到列中。 示例 -

df = pd.DataFrame(dictA).T

演示 -

In [182]: dictA = {'X':{'A': 0.2, 'B':0.3, 'C':0.4} ,'Y':{'A': 0.05, 'B':0.8, 'C':0.1},'Z':{'A': 0.15, 'B':0.6, 'C':0.25}}

In [183]: df = pd.DataFrame(dictA).T

In [184]: df
Out[184]:
      A    B     C
X  0.20  0.3  0.40
Y  0.05  0.8  0.10
Z  0.15  0.6  0.25

暫無
暫無

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

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