python, сумма значений из нескольких строк
Oct 15 2020
У меня есть сотни файлов csv, например:
Что хочу сделать, это вычислить сумму каждой строки по столбцам A_*и B_*соответственно.
Например file_1.csv, я использую следующий код:
#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)
Поскольку мне нужно обрабатывать сотни таких файлов, как мне изменить код, чтобы он мог автоматически определять, сколько Aстолбцов и bстолбцов в файле CSV, и вычислять сумму?
Например, он может сгенерировать file_3.csvтакой код :
#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)
Большое спасибо.
Ответы
2 QuangHoang Oct 15 2020 at 00:56
Вы можете использовать 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)
Или используйте регулярное выражение, а также цикл:
for type in ['A','B']:
df[f'{type}_sum'] = df.filter(regex=f'^{type}_').sum(1)