python, soma do valor de várias linhas

Oct 15 2020

Tenho centenas de arquivos csv como os seguintes:

O que eu quero fazer é calcular a soma de cada linha para colunas A_*e B_*, respectivamente.

Por exemplo file_1.csv, eu uso o seguinte código:

#for file_1.csv

import pandas as pd 
df = pd.read_csv('file_1.csv')
df["A_sum"]=df["A_1"]+df["A_2"]+df["A_3"]
df["B_sum"]=df["B_1"]+df["B_2"]
df.to_csv (r'output_file_1.csv', index = False, header=True)

Já que tenho que processar centenas de arquivos como este, como devo modificar o código para que ele possa identificar automaticamente quantas Acolunas e bcolunas em um arquivo csv e calcular a soma?

Por exemplo, ele pode gerar um código file_3.csvcomo este:

#for file_3.csv

import pandas as pd 
df = pd.read_csv('file_3.csv')
df["A_sum"]=df["A_1"]+df["A_2"]
df["B_sum"]=df["B_1"]+df["B_2"]
df.to_csv (r'output_file_3.csv', index = False, header=True)

Muito obrigado.

Respostas

2 QuangHoang Oct 15 2020 at 00:56

Você pode usar filter:

ret_df = pd.DataFrame()

ret_df['A_sum'] = df.filter(like='A_').sum(1)
ret_df['B_sum'] = df.filter(like='B_').sum(1)

Ou use regex e também um loop:

for type in ['A','B']:
    df[f'{type}_sum'] = df.filter(regex=f'^{type}_').sum(1)