簡體   English   中英

來自dicts的dicts列表的DataFrame

[英]DataFrame from list of dicts of dicts

我有一個dicts list ,其中dict中的每個鍵包含另一個dict

In [256]: data_list
Out[256]: 
[{'1111': {'index': 602, 'prop_1': 0, 'prop_2': 1},
  '2222': {'index': 602, 'prop_1': 0, 'prop_2': 1}},
 {'1111': {'index': 603, 'prop_1': 0, 'prop_2': 0},
  '2222': {'index': 603, 'prop_1': 1, 'prop_2': 1}}]

In [257]: index = {i.pop('index') for x in data_list for i in x.values()}

In [258]: df = DataFrame(data_list, index=index)

In [259]: df
Out[259]: 
                             1111                          2222
602  {u'prop_1': 0, u'prop_2': 1}  {u'prop_1': 0, u'prop_2': 1}
603  {u'prop_1': 0, u'prop_2': 0}  {u'prop_1': 1, u'prop_2': 1}

如何創建以下或類似的pandas.DataFrame

index1 index2    prop_1    prop_2
602    1111      0         1
       2222      0         1
603    1111      0         0
       2222      1         1 

考慮到您可以通過執行.apply(pd.Series)將一系列字典轉換為多列數據框,您可以將原始數據框stack()到multiIndex系列,然后使用.apply(pd.Series)

df.stack().apply(pd.Series)

#            prop_1  prop_2
# 602   1111      0       1
#       2222      0       1
# 603   1111      0       0
#       2222      1       1

使用concat解決方案,通過Tset_index轉置:

df = pd.concat([pd.DataFrame(key) for key in data_list], axis=1)
       .T
       .set_index('index', append=True)

df.index = df.index.swaplevel(0,1)
df.index.names = ['index1','index2']
print (df)
               prop_1  prop_2
index1 index2                
602    1111         0       1
       2222         0       1
603    1111         0       0
       2222         1       1

暫無
暫無

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

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