Данные в пандах перепрыгивают в другие ячейкиPython

Программы на Python
Anonymous
Данные в пандах перепрыгивают в другие ячейки

Сообщение Anonymous »

Я пытаюсь получить показать статус интерфейса от сетевых коммутаторов и поместить их в Pandas (у меня есть другие планы на будущее, чтобы использовать эти данные).
Когда Я вхожу в сетевой коммутатор и самостоятельно запускаю команду cli, вот что я получил
[img]https://i.stack .imgur.com/ZfDdl.jpg[/img]
Также ниже представлена ​​таблица результатов переключения.



Порт
Имя
Статус
Vlan
Дуплекс
Скорость
Тип



Fa0/1
ДАННЫЕ ПК
подключены
1
полный
a-100
10/100BaseTX


Fa0/2
ДАННЫЕ ПК
не подключаются
1
авто
авто
10/100BaseTX


Fa0/ 3

отключено
1
авто
авто
авто
td>
авто
10/100BaseTX


Fa0/4

подключено
1
a -full
a-100
10/100BaseTX

Fa0/5
KRONOS
не подключается
1авто
авто
10/100BaseTX

< tr>
Fa0/6
KRONOS
не подключается
1
авто
авто
10/100BaseTX



Однако, когда вы используете команду в Python с netmiko и используете вывод как Pandas Dataframe, я у меня две проблемы. Сам вывод в порядке, но выглядит как косметическая проблема или проблема с таблицей.
  • если ячейка имени пуста в любой строке, все остальные ячейки смещаются влево. (например: Fa0/3 и Fa0/4)
  • если в ячейке имени есть два или более слов с пробелами, каждое слово заполняет ячейку справа, что делает данные непригодными для использования.( Например: Fa0/1 и Fa0/2)
[img]https://i.stack .imgur.com/r56OE.jpg[/img]

это результат, который я получаю из своего кода. Также я поместил это в табличную форму ниже, поскольку вы можете видеть, что есть некоторые несоответствия. между двумя таблицами.



Порт
Имя
Статус
Vlan
Дуплекс
Скорость
Тип




Fa0/1
ПК
ДАННЫЕ
подключено
1
a-полное
a-100


Fa0/2
ПК
ДАННЫЕ
не подключаются
1
авто
авто< /td>


Fa0/3
отключено
1
авто
авто
10/100BaseTX
нан


Fa0/4
подключен
1
a-full
a-100
10/100BaseTX
нан


Fa0/5
КРОНОС
не подключаться
1
авто
авто
авто
авто
не подключаться
1
авто
авто
10/100BaseTX


Fa0/6
< td>KRONOS
не подключается
1
авто
auto
10/100BaseTX



вот мой код
from netmiko import ConnectHandler
import pandas as pd

def get_ip_address():
ip_address_request = input("Please enter the IP address of the device: ")
return ip_address_request

ip_address = get_ip_address()
switch = {
"device_type":"cisco_ios",
"ip": ip_address,
'username': 'redacted',
'password': 'redacted',
}

net_connect = ConnectHandler(**switch)
prompt = net_connect.find_prompt()
hostname = prompt[:-1]
status = net_connect.send_command("Show interface status", use_textfsm=True)
net_connect.disconnect()

sum_status = []
lines = status.strip().split('\n')
headers = lines[0].split()

for line in lines[1:]:
values = line.split()
entry = {}
for i, header in enumerate(headers):
if i < len(values):
entry[header] = values
sum_status.append(entry)

status_df = pd.DataFrame(sum_status)
status_df.reset_index(inplace=True, drop=True)

pd.set_option('display.max_colwidth', None)
status_df.loc[:, 'Name'] = status_df['Name'].fillna('')
print(status_df.to_string(index=False))


Подробнее здесь: https://stackoverflow.com/questions/781 ... ther-cells

Вернуться в «Python»