Cel
Mam ramki danych Pandy, jak pokazano poniżej, z wielu kolumn i chciałby uzyskać sumę kolumny MyColumn
.
Ramka danych -df
:
print df
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
Moja próba :
Próbowałem uzyskać sumę kolumny za pomocą groupby
i .sum()
:
Total = df.groupby['MyColumn'].sum()
print Total
Powoduje to następujący błąd:
TypeError: 'instancemethod' object has no attribute '__getitem__'
Oczekiwany wynik
Spodziewałbym się, że wynik będzie następujący:
319
Lub alternatywnie chciałbym df
otrzymać nowy row
tytuł TOTAL
zawierający łącznie:
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
TOTAL 319
Odpowiedzi:
Powinieneś użyć
sum
:Następnie używasz
loc
withSeries
, w takim przypadku indeks powinien być taki sam, jak określona kolumna, którą chcesz zsumować:ponieważ jeśli przekażesz wartość skalarną, wartości wszystkich wierszy zostaną wypełnione:
Dwa inne rozwiązania są dostępne
at
iix
zobacz aplikacje poniżej:Uwaga: od wersji Pandas v0.20
ix
jest przestarzała. Użyjloc
lubiloc
zamiast.źródło
.loc
robi w powyższym przykładzie?loc
służy do ustawiania z powiększeniem .at
działa również dla ustawienia z powiększeniem, patrz ostatnia edycja.The .loc/.ix/[] operations can perform enlargement when setting a non-existant key for that axis.
, takloc
lubix
lub[]
. w następnej sekcji pisze,at may enlarge the object in-place as above if the indexer is missing.
więc wszystkie metody są dobre, aleat
myślę , że jest najszybsza.Inna opcja, z której możesz skorzystać tutaj:
Możesz również użyć
append()
metody:Aktualizacja:
Jeśli chcesz dodać sumę do wszystkich kolumn liczbowych , możesz wykonać jedną z następujących czynności:
Służy
append
do tego w funkcjonalny sposób (nie zmienia oryginalnej ramki danych):Służy
loc
do mutowania ramki danych w miejscu:źródło
Podobnie jak w przypadku uzyskania długości ramki danych,
len(df)
następujące działania działały w przypadku pand i blasku:lub alternatywnie
źródło
Jeśli jest jakiś problem, proszę mnie poprawić.
źródło
Jako inną opcję możesz zrobić coś takiego poniżej
Poniższy skrypt możesz użyć do powyższych danych
źródło