python, somme des valeurs de plusieurs lignes
Oct 15 2020
J'ai des centaines de fichiers csv comme suit:
Ce que je veux faire pour calculer la somme de chaque ligne pour les colonnes A_*et B_*, respectivement.
Par exemple pour file_1.csv, j'utilise le code suivant:
#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)
Puisque je dois traiter des centaines de fichiers comme celui-ci, comment dois-je modifier le code pour qu'il puisse identifier automatiquement le nombre de Acolonnes et de bcolonnes dans un fichier csv et calculer la somme?
Par exemple, il peut générer du code pour file_3.csvcomme ceci:
#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)
Merci beaucoup.
Réponses
2 QuangHoang Oct 15 2020 at 00:56
Vous pouvez utiliser 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 utilisez regex, et aussi une boucle:
for type in ['A','B']:
df[f'{type}_sum'] = df.filter(regex=f'^{type}_').sum(1)