【问题标题】:print(tabulate(...)) to pretty print multiIndex pandas ?print(tabulate(...)) 漂亮地打印 multiIndex pandas ?
【发布时间】:2017-05-26 09:59:12
【问题描述】:

假设我有一个熊猫数据框:

import numpy as np
import pandas as pd
from tabulate import tabulate

A = pd.DataFrame(np.random.randint(0,10,(3,6)), index= ['uno', 'dos', 'tres'])
A.columns = ['A','B','C','D','E','F']
A.index.names = ['type']
A.columns.names= ['group']

h = [A.index.names[0] +'/'+ A.columns.names[0]] + list(A.columns)
print(tabulate(A, headers= h, tablefmt= 'grid'))

给出:

+--------------+-----+-----+-----+-----+-----+-----+
| type/group   |   A |   B |   C |   D |   E |   F |
+==============+=====+=====+=====+=====+=====+=====+
| uno          |   3 |   1 |   6 |   0 |   7 |   0 |
+--------------+-----+-----+-----+-----+-----+-----+
| dos          |   9 |   5 |   3 |   0 |   6 |   6 |
+--------------+-----+-----+-----+-----+-----+-----+
| tres         |   6 |   7 |   4 |   6 |   8 |   4 |
+--------------+-----+-----+-----+-----+-----+-----+

现在添加一个图层:

iterable = [['A', 'B'], ['AA', 'BB', 'CC']]
A.columns = pd.MultiIndex.from_product(iterable,
                                       names= ['group', 'subgroup'])
A.index.names = ['type']

将使用打印语句给出:

group     A        B      
subgroup AA BB CC AA BB CC
type                      
uno       3  1  6  0  7  0
dos       9  5  3  0  6  6
tres      6  7  4  6  8  4

通常,这不会在 pweave 等文档上很好地呈现。

如何使用 print(tabulate(...)),例如我将每个组和子组显示在单独的行上?

谢谢

【问题讨论】:

    标签: python python-3.x pandas python-3.5 pweave


    【解决方案1】:

    使用tabulate 0.8.1 或更高版本,

    import numpy as np
    import pandas as pd
    from tabulate import tabulate
    
    A = pd.DataFrame(np.random.randint(0,10,(3,6)), index= ['uno', 'dos', 'tres'])
    A.columns = ['A','B','C','D','E','F']
    A.index.names = ['type']
    A.columns.names= ['group']
    
    iterable = [['A', 'B'], ['AA', 'BB', 'CC']]
    A.columns = pd.MultiIndex.from_product(iterable, names= ['group', 'subgroup'])
    
    h = [A.index.names[0] +'/'+ A.columns.names[0]] + list(map('\n'.join, A.columns.tolist()))
    print(tabulate(A, headers= h, tablefmt= 'grid'))
    

    产量

    +--------------+------+------+------+------+------+------+
    | type/group   |    A |    A |    A |    B |    B |    B |
    |              |   AA |   BB |   CC |   AA |   BB |   CC |
    +==============+======+======+======+======+======+======+
    | uno          |    8 |    4 |    3 |    3 |    4 |    2 |
    +--------------+------+------+------+------+------+------+
    | dos          |    1 |    1 |    1 |    9 |    8 |    9 |
    +--------------+------+------+------+------+------+------+
    | tres         |    0 |    4 |    3 |    6 |    1 |    7 |
    +--------------+------+------+------+------+------+------+
    

    【讨论】:

      猜你喜欢
      • 2015-02-07
      • 2013-10-08
      • 2015-01-22
      • 2010-12-06
      • 2017-12-19
      • 2015-07-03
      相关资源
      最近更新 更多