2017-02-01 5 views
2

テーブル形式で入れ子になった辞書をきれいに印刷する方法はありますか?私のデータ構造は次のようになります。テーブルとしてかなり入れ子になった辞書

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 

私はこのようなもの(名前は1行に保存されています)を印刷しようとしています。名前が次のとおりであることに注意してください。

私はこのコードでパンダを試してみました。

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

しかし、上記の問題は、パンダは(名前を1行に印刷され、それは名前がたくさんあります場合は特に、良い見ていない)、このようにそれを印刷していることです。

                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] 

私は1つ別の下にリストされた名前が、これを好みます。

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

パンダなどのツールを使用して印刷する方法はありますか?

答えて

2

これはナンセンスのハッカーであり、表示のみを目的としています。

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    
関連する問題