说我有一个熊猫数据框:
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(...)),例如我将每个组和子组显示在单独的行上?
谢谢
使用表格版本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 | +--------------+------+------+------+------+------+------+