2016-11-07 6 views
-1

Кто-нибудь знает, как исправить проблему "no attr = 'labels' под dataframe.index", когда дата-кадр генерируется из Pivot?
Ниже приведено два примера:
первый (сводный информационный кадр) return error 'index не имеет атрибутов attr',
работает второй ('groupby' dataframe).Pandas Pivot output to html

Пример '' Стержень:

import pandas as pd 
import numpy as np 

raw_data = {'A' : ['A1', 'A1', 'A2', 'A2'], 
      'B': ['B1', 'B2', 'B2', 'B1'], 
      'QTY': [1., 2., 3., 4.],} 
df = pd.DataFrame(raw_data) 
df_pivot = df.pivot(index='A', columns='B', values='QTY') 

print "-------Result---------" 
print df_pivot 
print "------View Index------" 
print df_pivot.index 
print "------View Label------" 
print df_pivot.index.labels 

Выход:

 
-------Result--------- 
B B1 B2 
A 
A1 1.0 2.0 
A2 4.0 3.0 
------View Index------ 

    Index([u'A1', u'A2'], dtype='object', name=u'A') 

------View Label------ 
Traceback (most recent call last): 
    File "test6.py", line 15, in 
    print df_pivot.index.labels 
AttributeError: 'Index' object has no attribute 'labels' 

Пример '' GroupBy:

import pandas as pd 
import numpy as np 

raw_data = {'A' : ['A1', 'A1', 'A2', 'A2'], 
      'B': ['B1', 'B2', 'B2', 'B1'], 
      'QTY': [1., 2., 3., 4.],} 
df = pd.DataFrame(raw_data) 
#df_pivot = df.pivot(index='A', columns='B', values='QTY') 
df_gb = df.groupby(['A','B']).agg({'QTY':'sum'}) 
print "-------Result---------" 
print df_gb 
print "------View Index------" 
print df_gb.index 
print "------View Label------" 
print df_gb.index.labels 

Выход:

 
-------Result--------- 
     QTY 
A B 
A1 B1 1.0 
    B2 2.0 
A2 B1 4.0 
    B2 3.0 
------View Index------ 

    MultiIndex(levels=[[u'A1', u'A2'], [u'B1', u'B2']], 
       labels=[[0, 0, 1, 1], [0, 1, 0, 1]], 
       names=[u'A', u'B']) 

------View Label------ 
[[0, 0, 1, 1], [0, 1, 0, 1]] 
+0

Можете ли вы привести пример и показать полное сообщение об ошибке, включая строку, которая вызывает ошибку? – IanS

ответ

0

Кажется, индекс не этикетки Attr, так что я должен добавить "isinstance (индекс, pd.Index)", чтобы применить другую логику.