2017-01-11 3 views
3

Скажем у меня есть кадр панды данных:print (tabulate (...)) для красивой печати multiIndex pandas?

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.

Как использовать печать (табуляция (...)), например, чтобы каждая группа и подгруппа отображались на отдельной строке?

Благодаря

ответ

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 | 
+--------------+------+------+------+------+------+------+ 
Смежные вопросы