簡體   English   中英

漂亮的嵌套字典作為表格

[英]pretty nested dictionary as a table

有沒有辦法以表格格式漂亮地打印嵌套字典? 我的數據結構是這樣的;

 data = {'01/09/16': {'In': ['Jack'], 'Out': ['Lisa', 'Tom', 'Roger', 'Max', 'Harry', 'Same', 'Joseph', 'Luke', 'Mohammad', 'Sammy']},
     '02/09/16': {'In': ['Jack', 'Lisa', 'Rache', 'Allan'], 'Out': ['Lisa', 'Tom']},
     '03/09/16': {'In': ['James', 'Jack', 'Nowel', 'Harry', 'Timmy'], 'Out': ['Lisa', 'Tom

我正在嘗試將其打印出來(名稱保留在一行中)。 請注意,名稱在下面列出:

+----------------------------------+-------------+-------------+-------------+
|               Status             |  01/09/16   |  02/09/16   |    03/09/16 |
+----------------------------------+-------------+-------------+-------------+
|               In                 |  Jack          Tom             Tom
                                                 |  Lisa       |    Jack     |
+----------------------------------+-------------+-------------+-------------+
|               Out                |  Lisa
                                      Tom        |  Jack       |    Lisa     |
+----------------------------------+-------------+-------------+-------------+

我試過在這段代碼中使用熊貓;

pd.set_option('display.max_colwidth', -1)
df = pd.DataFrame(role_assignment)
df.fillna('None', inplace=True)
print df

但是上面的問題是pandas是這樣打印的(名字是一行打印的,不好看,尤其是名字很多的時候);

                                                                    01/09/16  \
In   [Jack]                                                                
Out  [Lisa, Tom, Roger, Max, Harry, Same, Joseph, Luke, Mohammad, Sammy]   

                       02/09/16                            03/09/16  
In   [Jack, Lisa, Rache, Allan]  [James, Jack, Nowel, Harry, Timmy]  
Out  [Lisa, Tom]                 [Lisa, Tom]  

我更喜歡這個,但名字在下面列出;

    01/09/16 02/09/16 03/09/16
In   [Jack]   [Jack]   [James]
Out  [Lisa]   [Lisa]   [Lisa] 

有沒有辦法使用 Pandas 或其他工具將它打印得更整潔?

這是無稽之談,僅用於展示目的。

data = {
    '01/09/16': {
        'In': ['Jack'],
        'Out': ['Lisa', 'Tom', 'Roger',
                'Max', 'Harry', 'Same',
                'Joseph', 'Luke', 'Mohammad', 'Sammy']
    },
    '02/09/16': {
        'In': ['Jack', 'Lisa', 'Rache', 'Allan'],
        'Out': ['Lisa', 'Tom']
    },
    '03/09/16': {
        'In': ['James', 'Jack', 'Nowel', 'Harry', 'Timmy'],
        'Out': ['Lisa', 'Tom']
    }
}


df = pd.DataFrame(data)

d1 = df.stack().apply(pd.Series).stack().unstack(1).fillna('')

d1.index.set_levels([''] * len(d1.index.levels[1]), level=1, inplace=True)

print(d1)

     01/09/16 02/09/16 03/09/16
In        Jack     Jack    James
                   Lisa     Jack
                  Rache    Nowel
                  Allan    Harry
                           Timmy
Out       Lisa     Lisa     Lisa
           Tom      Tom      Tom
         Roger                  
           Max                  
         Harry                  
          Same                  
        Joseph                  
          Luke                  
      Mohammad                  
         Sammy               

暫無
暫無

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

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