我期待在大熊猫中将str.contains
用于一列,并将其~ str.contains
用于另一列。
第一个是OS Version
列,我在这里使用str.contains
,这很好,但是,我正在联合寻找另一列Aux Site
,该列忽略或不匹配用于字符串VCAD
。
说,我不想从VCAD
列中删除Aux Site
选择,以便每个匹配的行都可以被删除或不被提取。
1)第一个很好..
df1['OS Version'].str.contains(MATCH_PATT)
2-具有逆向匹配的第二个
df1[~df1['Aux Site'].str.contains('VCAD')]
在这里,我的意思是匹配给定列MATCH_PATT
的{{1}},而如果它在OS Version
列中找到字符串/模式VCAD,则将其删除或跳过。
Aux Site
import pandas as pd
MATCH_PATT = "AIX|CentOS|Fedora|RHEL|SunOS|SuSE|Ubuntu|(?<!\?)\?(?!\?)"
COLUMN_NAMES = ['Hostname', 'IP Address', 'Aux Site', 'OS Version']
df1 = pd.read_csv('/home/karn/plura/Test/Python_Panda/CyberArk/host.txt', delimiter = "\t", usecols=COLUMN_NAMES, encoding='cp1252', dtype='unicode')
df2 = df1[df1['OS Version'].str.contains(MATCH_PATT, na=False)][['Hostname', 'IP Address', 'Aux Site', 'OS Version']]
df2[['Hostname', 'Aux Site']] = df2[['Hostname', 'Aux Site']].replace({'\*': ''}, regex=True)
df2.to_csv('new_survey_list-1', index=False)
我假设使用df1[(df1['OS Version'].str.contains(MATCH_PATT, na=False)) & (~df1['Aux Site'].str.contains('VCAD'))] [['Hostname', 'IP Address', 'Aux Site', 'OS Version']]
运算符的上述解决方案应该可以工作吗?
任何解决方案,请多多指教。
&
Hostname Aux Site OS Version
vlfox01 VCAD CentOS 5.5
vlfox02 VCAD RHEL 7.1
vlfox03 VCAD RHEL 6.8
vlbrk01 brackn RHEL 5.8
vlbrk02 brackn SunOS 5.9
vlbrk03 brackn RHEL 5.5
vlbrk04 brackn RHEL 6.3
vlbrk05 brackn RHEL 5.5
在下面尝试并现在工作。.
vlbrk01 brackn RHEL 5.8
vlbrk02 brackn SunOS 5.9
vlbrk03 brackn RHEL 5.5
vlbrk04 brackn RHEL 6.3
vlbrk05 brackn RHEL 5.5