2014-11-05 10 views
5

Próbowałem na chwilę, by uzyskać to wrk i nie mogę - Czytałem dokumentację i muszę być nieporozumienia cośPython Pandy Pivot - Dlaczego nie zawodzi

Mam ramki danych w długim formacie i I chcesz zrobić to szeroko - jest to dość powszechne. Ale pojawia się błąd

from pandas import DataFrame 
data = DataFrame({'value' : [1,2,3,4,5,6,7,8,9,10,11,12], 
        'group' : ['a','a','a','b','b','b','b','c','c','c','d','d']}) 
data.pivot(columns='group') 

błąd pojawia się (część łat, gdyż są one dość obszerne): ValueError: nie można indeksu etykieta z pustym kluczem

Próbowałem to w Pythonie (notebook) a także na regularnych linii poleceń python c w OS X z takim samym skutkiem

dzięki za wgląd, jestem pewien, że będzie coś podstawowe

+1

Czy na pewno potrzebujesz przestawić? co z 'data.T'? – Anzel

Odpowiedz

8

z tego, co staraliśmy się zrobić, to staraliśmy się przekazać " grupa "as index, więc pivot się nie powiódł. Powinno być:

data.pivot(data.index, 'group') 

lub

# the format is pivot(index=None, columns=None, values=None) 
data.pivot(index=data.index, columns='group') 

Jednak nie jestem do końca pewien, co spodziewane wyjście chcesz, jeśli chcesz po prostu krótszą prezentację, zawsze można użyć transpose:

data.T 

lub, najlepiej dla prezentacji w twoim przypadku, jest groupby:

data.groupby('group').sum() 
     value 
group  
a   6 
b   22 
c   27 
d   23 
+0

dzięki. To działa. Próbowałem mieć jedną kolumnę dla wszystkich wartości, jedną dla wszystkich b, itd. I zdaję sobie sprawę, że skoro nie są one jednakowo długie, otrzymam NA, w prawdziwym życiu użyłbym go dla równych zbiorów – user1617979