#python #loops #csv #output
Вопрос:
Я пытаюсь запустить свой скрипт на нескольких файлах .csv и вывести результаты из каждого файла. Фрагмент моего кода выглядит следующим образом-
import sys
import os
import logging
import subprocess
import argparse
import pandas as pd
import glob
files = glob.glob('/scratch/*/*.csv')
for file in files:
df = pd.read_csv(file,delimiter = ',',skiprows=range(1,11))
#do some calculation on each file
#calculate the final value
metric = (max(max(dif_r1a),max(dif_r1c),max(dif_r1g),max(dif_r1t),max(dif_r2a),max(dif_r2c),max(dif_r2g),max(dif_r2t)))
#output the final value for each csv file
print(os.path.basename(file) ' ' str(metric))
Вывод, который я получаю, предназначен только для одного csv-файла
file1.csv 0.25
Как мне повторить это, чтобы вывести значение для всех csv-файлов ?
Спасибо
Комментарии:
1. Является ли код, который вы написали, точно таким, как вы опубликовали выше? Разве вы не хотели сделать отступ в остальной части кода, чтобы быть в
for
цикле?
Ответ №1:
Исходя из того, как это выглядит в приведенном выше коде, вы создаете фрейм данных для каждого файла .csv, но вычисляете только конечное значение и печатаете после выполнения цикла for. Если бы вы хотели сделать это для каждого кадра данных, они должны были бы находиться в цикле for:
import sys
import os
import logging
import subprocess
import argparse
import pandas as pd
import glob
files = glob.glob('/scratch/*/*.csv')
for file in files:
df = pd.read_csv(file,delimiter = ',',skiprows=range(1,11))
#do some calculation on each file
#calculate the final value
metric = (max(max(dif_r1a),max(dif_r1c),max(dif_r1g),max(dif_r1t),max(dif_r2a),max(dif_r2c),max(dif_r2g),max(dif_r2t)))
#output the final value for each csv file
print(os.path.basename(file) ' ' str(metric))
Это то, что у вас есть на данный момент, но вы хотели бы изменить его на:
import sys
import os
import logging
import subprocess
import argparse
import pandas as pd
import glob
files = glob.glob('/scratch/*/*.csv')
for file in files:
df = pd.read_csv(file,delimiter = ',',skiprows=range(1,11))
#do some calculation on each file
#calculate the final value
metric =
(max(max(dif_r1a),max(dif_r1c),max(dif_r1g),max(dif_r1t),
max(dif_r2a),max(dif_r2c),max(dif_r2g),max(dif_r2t)))
#output the final value for each csv file
print(os.path.basename(file) ' ' str(metric))
Однако это также может быть связано с форматированием комментария.