2016-05-24 2 views
1

Я пытаюсь сделать кадр данных, как это:Как я могу пометить столбцы и строки Pandas DataFrames?

Table

Это то, что я до сих пор:

labels = ['Rain', 'No Rain'] 
pd.DataFrame([[27, 63],[7, 268]], columns=labels, index=labels) 

Это выглядит следующим образом:

enter image description here

Но это не создает родительские категории. Как я могу пометить столбцы как «Фактическая погода», а строки - «Прогноз»?

+0

Вы можете попробовать создать мультииндекс с индексом = pd.MultiIndex.from_tuples (кортежи) с кортежами ((«Фактическая погода», «Дождь»), («Фактическая погода», «Без дождя»)) и одинаковые для индекса строки – lint

ответ

3

Вы хотите создать мульти-индекс для индекса и столбцов:

In [17]: 
df = pd.DataFrame(data=[[27,63],[7,268]], columns = pd.MultiIndex.from_tuples([('Actual Weather','Rain'),('Actual Weather', 'No Rain')]), 
       index=pd.MultiIndex.from_tuples([('Forecast','Rain'),('Forecast','No Rain')])) 
df 

Out[17]: 
       Actual Weather   
          Rain No Rain 
Forecast Rain    27  63 
     No Rain    7  268 
3

Если вы имеете в виду названия столбцов и осей индекса, вы можете установить .name недвижимость на тех:

>>> labels = ['Rain', 'No Rain'] 
>>> df = pd.DataFrame([[27, 63],[7, 268]], columns=labels, index=labels) 
>>> df.columns.name = 'Actual Weather' 
>>> df.index.name = 'Forecast' 
>>> print(df) 
Actual Weather Rain No Rain 
Forecast      
Rain    27  63 
No Rain   7  268 
Смежные вопросы