Alvo
Eu tenho um quadro de dados do Pandas, como mostrado abaixo, com várias colunas e gostaria de obter o total da coluna MyColumn
,.
Quadro de dados -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
Minha tentativa :
Tentei obter a soma da coluna usando groupby
e .sum()
:
Total = df.groupby['MyColumn'].sum()
print Total
Isso causa o seguinte erro:
TypeError: 'instancemethod' object has no attribute '__getitem__'
Resultado Esperado
Eu esperava que a saída fosse a seguinte:
319
Ou, alternativamente, gostaria df
de ser editado com um novo row
título TOTAL
contendo o total:
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
Respostas:
Você deve usar
sum
:Em seguida, você usa
loc
comSeries
, nesse caso, o índice deve ser definido como o mesmo da coluna específica que você precisa somar:porque se você passar escalar, os valores de todas as linhas serão preenchidos:
Duas outras soluções estão com
at
, eix
veja os aplicativos abaixo:Observação: desde o Pandas v0.20,
ix
ele está obsoleto. Useloc
ou em seuiloc
lugar.fonte
.loc
faz no exemplo acima?loc
é para configuração com ampliação .at
funciona para configuração com ampliação também, consulte a última edição.The .loc/.ix/[] operations can perform enlargement when setting a non-existant key for that axis.
, assimloc
ouix
ou[]
. na próxima seção é escreveat may enlarge the object in-place as above if the indexer is missing.
Portanto, todos os métodos são bons, masat
acho que é mais rápido.Outra opção que você pode escolher aqui:
Você também pode usar o
append()
método:Atualizar:
No caso de você precisar acrescentar soma para todos os números colunas , você pode fazer uma das seguintes opções:
Use
append
para fazer isso de maneira funcional (não altera o quadro de dados original):Use
loc
para alterar o quadro de dados no local:fonte
Semelhante a obter o comprimento de um dataframe,,
len(df)
o seguinte funcionou para pandas e blaze:ou alternativamente
fonte
Se houver algum problema nisso, corrija-me.
fonte
Como outra opção, você pode fazer algo como abaixo
Abaixo do script, você pode usar para os dados acima
fonte