У меня есть несколько CSV-файлов в один столбец, которые я использую pandas
для объединения и нахождения среднего значения:
#!/usr/bin/env python3
import os
import glob
import pandas as pd
from sys import argv, exit
os.chdir(f'{argv[1]}')
filenames = [i for i in glob.glob('*.csv')]
comb = pd.concat([pd.read_csv(f, header=None) for f in filenames], axis=1)
comb.columns = [f'Run {i+1}' for i in range(len(comb.columns))]
comb['Mean'] = comb.mean(numeric_only=True, axis=1)
comb.insert(loc=0, column='Epoch', value=[i+1 for i in range(len(comb))])
comb.to_csv(f'{argv[2]}', index=False)
Где argv[1]
- каталог для объединения, а argv[2]
- для сохранения составной файл. Пример ввода может быть:
0.6932
0.6605
0.634
0.5904
0.5339
И пример вывода:
Epoch Run 1 Run 2 Run 3 Run 4 Run 5 Mean
1 0.6932 0.6711 0.6687 0.6814 0.6903 0.684856667
2 0.6605 0.6326 0.6423 0.6323 0.6247 0.639423333
3 0.634 0.6003 0.6063 0.5928 0.5786 0.603956667
4 0.5904 0.5604 0.5576 0.5448 0.5276 0.559693333
5 0.5339 0.519 0.5068 0.496 0.4813 0.513653333
Это объединение пяти CSV-файлов из одного столбца и пяти строк.
Как я могу удалить столбцы из этой таблицы, которые имеют наибольшее число для последней строки? Скажем, я хочу отбросить два столбца, в данном случае Run 1
и Run 2
. Желаемым выводом может быть:
Epoch Run 3 Run 4 Run 5 Mean
1 0.6687 0.6814 0.6903 0.680133333
2 0.6423 0.6323 0.6247 0.6331
3 0.6063 0.5928 0.5786 0.592566667
4 0.5576 0.5448 0.5276 0.543333333
5 0.5068 0.496 0.4813 0.4947
Имеет ли pandas
встроенную функцию для удаления столбцов на основе значения некоторой строки? Меня интересует последняя строка для данного столбца и удаление там столбцов с наибольшим значением.