Eu criei o seguinte dataframe do pandas:
ds = {'col1' : [1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,4],
'feature1' : [1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,4],
'col2' : [12,3,4,5,4,3,2,3,4,6,7,8,3,3,65,4,3,2,32,1,2,3,4,5,32],
}
df = pd.DataFrame(data=ds)
O quadro de dados fica assim:
print(df)
col1 feature1 col2
0 1 1 12
1 1 1 3
2 1 1 4
3 1 1 5
4 1 1 4
5 1 1 3
6 1 1 2
7 2 2 3
8 2 2 4
9 2 2 6
10 2 2 7
11 3 3 8
12 3 3 3
13 3 3 3
14 3 3 65
15 3 3 4
16 4 4 3
17 4 4 2
18 4 4 32
19 4 4 1
20 4 4 2
21 4 4 3
22 4 4 4
23 4 4 5
24 4 4 32
Preciso criar uma nova coluna (chamada sumOfCols
) que é a soma dos valores contidos nas colunas cujos nomes começam com col
(no exemplo acima a coluna feature1
não seria incluída no cálculo).
O dataframe resultante ficaria assim:
Alguém pode me ajudar, por favor? Desde já, obrigado.
Você pode usar
filter
as colunas usando um regex esum
depoisaxis=1
:Outra solução possível:
Alternativamente,
Saída:
Apenas mais uma maneira de fazer isso, caso você não queira usar RegEx ou para parecer um pouco mais legível
Isso obterá dinamicamente uma lista de todas as colunas que não começam com 'col' e as eliminará da agregação de soma ao longo do eixo da coluna.