У меня есть следующие данные в файле CSV. Имеет 8 столбцов. Вот данные:
Device,Interface,Description,Average Inbound,Max Inbound,Average Outbound,Max Outbound
Router,Cable0/0/0,,34.13M bps,88.57M bps,26.12M bps,80.39M bps
Router,Cable0/0/0-upstream0,Node1,10.60M bps,16.07M bps,0 bps,0 bps
Router,Cable0/0/0-upstream1,Node1,4.74M bps,13.71M bps,0 bps,0 bps
Router,Cable0/0/0-upstream2,Node1,2.14M bps,10.65M bps,0 bps,0 bps
Router,Cable0/0/0-upstream3,Node1,1.35M bps,8.33M bps,0 bps,0 bps
Router,Cable0/0/1-upstream0,Node2,6.67M bps,7.80M bps,0 bps,0 bps
Router,Cable0/0/1-upstream1,Node2,6.40M bps,8.22M bps,0 bps,0 bps
Router,Cable0/0/1-upstream2,Node2,5.21M bps,8.06M bps,0 bps,0 bps
Router,Cable0/0/1-upstream3,Node2,4.84M bps,7.80M bps,0 bps,0 bps
Мне не нужно ничего делать со столбцом Device
или столбцом Max Inbound
или Max Outbound
. Однако мне нужно иметь возможность суммировать Avg. Inbound
и Avg. Outbound
для каждого узла (столбец «Описание»).
Так, например, мой сценарий Python должен будет выполнять итерацию по каждой строке, имеющей определенный узел (Node1, Node2 и т. Д.), А затем суммировать эти входящие и исходящие средние. Проблема в том, что в файле CSV есть такие символы мусора, как «M» для Million и «bps» для битов в секунду, прикрепленных к концу значений. Мне нужно удалить эти символы и превратить их в целые числа, прежде чем я смогу выполнить с ними математические вычисления. Говоря о математике, мне также нужно преобразовать эти значения в мегабит в секунду. Любые идеи о лучших подходах будут с благодарностью.
Спасибо за информацию. Код, с которого я начал, это:
import csv
import string
nodes = []
averages = []
with open('csvfile') as csvDataFile:
csvReader = csv.reader(csvDataFile)
for row in csvReader:
averages.append(row[4])
print averages
Это даст следующий результат:
['Max Inbound', '88.57M bps', '16.07M bps', '13.71M bps', '10.65M bps',
'8.33M bps', '7.80M bps', '8.22M bps', '8.06M bps', '7.80M bps']
Я мог бы использовать rstrip, как вы упомянули, для конечных символов, таких как M и, возможно, bps, но мне также нужно избавиться от первого элемента в списке «Max Inbound».
Как я могу сначала найти и сопоставить все интерфейсы, которые имеют одинаковое значение, а затем я могу выполнить математические вычисления для этих значений. Например, в столбце «Интерфейс» я хочу найти ВСЕ интерфейсы Cable0 / 0/0 (4 из них), а затем я могу выполнить математические операции со значениями для входящего / исходящего макс.
Можно ли это сделать, используя только модуль CSV и повторно, ИЛИ мне нужно использовать панд? Может кто-нибудь помочь мне разобраться с этим шагом? В приведенном выше примере данных мне нужно получить ТОЛЬКО значения, соответствующие Cable0 / 0/0, и сложить входящий / исходящий. Следующим шагом будет получение значений для Cable0 / 0/1 и т. Д.
Заранее большое спасибо за любую помощь.