"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como somar linhas específicas do DataFrame no Pandas?

Como somar linhas específicas do DataFrame no Pandas?

Publicado em 2024-11-09
Navegar:174

How to Sum Specific DataFrame Rows in Pandas?

Como somar linhas do DataFrame para colunas específicas no Pandas

Para um determinado DataFrame, pode ser necessário calcular a soma dos valores em linhas específicas. Ao tentar fazer isso por meio de df[['a', 'b', 'd']].map(sum), você pode encontrar problemas.

A operação apropriada para esta tarefa envolve o uso de sum() com eixo=1. Esta operação calcula a soma de cada linha, ignorando colunas não numéricas. Para garantir a precisão, é recomendado especificar numeric_only=True, especialmente nas versões 2.0 e superiores do Pandas.

Por exemplo, considere um DataFrame com colunas 'a', 'b', 'c' e 'd' , onde 'c' é uma coluna não numérica:

df = pd.DataFrame({'a': [1, 2, 3], 'b': [2, 3, 4], 'c': ['dd', 'ee', 'ff'], 'd': [5, 9, 1]})

Para calcular a soma de colunas 'a', 'b' e 'd', podemos usar:

df['e'] = df.sum(axis=1, numeric_only=True)

Este vai adicione uma coluna 'e' contendo a soma das colunas desejadas.

Se desejar somar colunas específicas enquanto exclui outras, você pode especificar uma lista de colunas e remover aquelas indesejadas usando col_list.remove(column_name) .

col_list = list(df)
col_list.remove('d')
df['e'] = df[col_list].sum(axis=1)

Isso criará uma nova coluna 'e' com a soma das colunas especificadas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3