Совпадение паттернов Pandas и преобразование CSV в dataFrame - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть код ниже, который я использую для анализа моих данных из текстового файла, который содержит несколько полей и имена сотен столбцов, где я выбираю обязательные поля во время обработки панд через read_csv, который работает нормально , он работает только с encoding = 'cp1252'. Есть пять ключевых полей, которые я ищу как ['Hostname', 'IP Address', 'Aux Site', 'OS Version', 'Network Name'],

В разделе шаблона, в котором я использую переменную patt, я ищу ключевые слова / строки как "AIX|CentOS|RHEL|SunOS|SuSE|Ubuntu|Fedora|\?", который, как я полагаю, не заботится о чувствительности к регистру. что соответствует столбцу OS Version, но я использую литральную метку ?, чтобы соответствовать ?, который работает, но в то же время он также получает Windows 10 ???, который мне нужен только ?, если его там в OS Version поле.

Во-вторых , при преобразовании df2.to_csv столбцы не разделяются, а переходят в столбец, который позже я делю вручную, как мы можем гарантировать, что каждое поле правильно обрабатывается как файл CSV.

#!/python/v3.6.1/bin/python3
import pandas as pd
##### Python pandas, widen output display to see more columns. ####
pd.set_option('display.height', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('expand_frame_repr', True)
##################### END OF THE Display Settings ###################
patt = "AIX|CentOS|RHEL|SunOS|SuSE|Ubuntu|Fedora|\?"
col_names = ['Hostname', 'IP Address', 'Aux Site', 'CPU Model', 'CDN Version', 'OS Version', 'Kernel Version', 'LDAP Profile', 'Network Name']
df1 = pd.read_csv('/home/karn/plura/Test/Python_Panda/host.txt', delimiter = "\t", usecols=col_names, encoding='cp1252',  dtype='unicode')
df2 = df1[df1['OS Version'].str.contains(patt,  na=False)][['Hostname', 'IP Address', 'Aux Site', 'OS Version', 'Network Name']]
df2['Hostname'] = df2['Hostname'].str.replace("*", "")
df2.to_csv("HostList_from_Surveys.csv", sep='\t', encoding='utf-8', index=False)

Ниже приведен пример данных. Изображение для просмотра:

enter image description here

Ниже опять те же данные в текстовом формате для воспроизведения.

Hostname    IP Address  Aux Site    OS Version  Network Name
host01      192.168.1.1   yoko  RHEL 5.5    CISCO
host02      192.168.1.2   chelmsford    AIX 6.1 
host03      192.168.1.3   sanjose   RHEL 5.5    
host04      192.168.1.4   rosh  CentOS 6.8  CISCO
host05      192.168.1.5   noida3    CentOS 5.10 CISCO
host06      192.168.1.6   rosh  RHEL 6.5    CISCO
host07      192.168.1.7   noida3    RHEL 6.5    CISCO
host08      192.168.1.8   san jose  RHEL 6.5    CISCO
host09      192.168.1.9   noida3    RHEL 5.5    
host10      192.168.1.10      sophia    RHEL 5.5    AVAYA
host11      192.168.1.11      sanjose   RHEL 5.5    AVAYA
host12      192.168.1.12      sanjose   RHEL 5.3    AVAYA
host13      192.168.1.13      sanjose   RHEL 5.8    AVAYA
host14  192.168.1.14      sanjose   Ubuntu 14.04.1  

любая помощь будет высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...