2017-08-15 47 views
5

Po prostu chcę użyć funkcji stopu w pandach i po prostu ciągle otrzymuję ten sam błąd.Obiekt "DataFrame" nie ma atrybutu "stop"

Wystarczy wpisanie przykład przewidzianej w dokumentacji:

cheese = pd.DataFrame({'first' : ['John', 'Mary'], 
         'last' : ['Doe', 'Bo'], 
         'height' : [5.5, 6.0], 
         'weight' : [130, 150]}) 

Właśnie pojawia się błąd:

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-119-dc0a0b96cf46> in <module>() 
----> 1 cheese.melt(id_vars=['first', 'last']) 
C:\Anaconda2\lib\site-packages\pandas\core\generic.pyc in __getattr__(self, name) 

2670    if name in self._info_axis: 
2671     return self[name] 
-> 2672    return object.__getattribute__(self, name) 
2673 
2674  def __setattr__(self, name, value): 

AttributeError: 'DataFrame' object has no attribute 'melt'` 

Odpowiedz

7

Ty pandy wersja jest poniżej 0.20.0, więc trzeba pandas.melt zamiast DataFrame.melt:

df = pd.melt(cheese, id_vars=['first', 'last']) 
print (df) 
    first last variable value 
0 John Doe height 5.5 
1 Mary Bo height 6.0 
2 John Doe weight 130.0 
3 Mary Bo weight 150.0 
2
def grilled(d): 
    return d.set_index(['first', 'last']) \ 
      .rename_axis('variable', 1) \ 
      .stack().reset_index(name='value') 

grilled(cheese) 

    first last variable value 
0 John Doe height 5.5 
1 John Doe weight 130.0 
2 Mary Bo height 6.0 
3 Mary Bo weight 150.0 
Powiązane problemy