Я уже несколько дней обдумываю эту проблему:
- У меня есть несколько фреймов данных в файлах csv, которые имеют одинаковый формат (имена столбцов, имена строк), и я Вы хотите вычислить среднее значение каждой строки каждого файла, а затем сохранить его в выходной CSV-файл. И это работает так:
import glob
import csv
with open('result.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
for filename in glob.glob('F*.csv'):
print (filename)
with open (filename, newline='') as f_input:
csv_input = csv.reader(f_input)
header = next(csv_input)
averages = [] #making a list for averages
for col in zip(*csv_input):
averages.append(sum(float(x) for (x) in col) / len(col))
csv_output.writerow([filename] + averages)
- Но мне действительно нужно среднее значение каждого столбца каждого кадра данных каждые 18 строк (потому что каждая строка = 1 минута), исключая заголовок (потому что это строка). Поэтому я пытался выбрать только первые 18 строк с чем-то вроде этого в для l oop
df = pd.read_csv(df,skiprows=0, nrows = 18) #to get only first 18 minutes'
Но это 1) не работает (я думаю, потому что это не применимо для читателя) 2) не идеально, потому что я на самом деле просто хочу разделить все dfs на 18 строк, а затем вычислить среднее значение для каждой строки.
Любой намек был бы очень полезен, спасибо!
update
"Возможно, вы можете показать нам небольшой примерный фрейм данных (с 4-5 столбцами и строками) и показать нам, какой вывод вы хотите (делая вид, что вы этого хотите) каждые 2 строки вместо каждых 18). "
Это мой пример df для каждого файла
col1 col2 col3 col4 col5 col6
0 1.228516 61.228516 1.0 418.808284 957.419867 1025.554374
1 61.228516 121.228516 1.0 207.864712 694.581742 814.149004
2 121.228516 181.228516 1.0 140.516367 370.653176 809.100268
3 181.228516 241.228516 1.0 140.274964 448.755593 885.196647
4 241.228516 301.228516 1.0 117.079110 312.173256 1907.873698
Я хочу вычислить среднее значение первых двух строк (0,1) для каждый столбец, скажем, здесь forl col6. Таким образом, мой вывод будет (1025.554374 + 814.149004) / 2 # определение арифметического c среднее.
Мне просто нужно это во всех моих CSV-файлах, но для каждых 18 строк
Надеюсь, теперь все стало понятнее, спасибо!