我有一个CSV文件,我正在尝试根据以下代码用pandas
进行读取。
import pandas as pd
import os
data = pd.read_csv(input("Please input the CSV File Name: "), usecols=['Safe', 'Platform ID', 'Target system address']).dropna()
df = data[data['Platform ID'].str.startswith("TDS-Unix")][['Target system address', 'Safe' ]]
print(df)
$ ./getcbk_srvlist_1_1.py
Please input the CSV File Name: InventoryReport.csv
Target system address Safe
3 host01 TDS-PAR-DEFAULT-UNIX-ROOT
4 host06 TDS-OT-SCM-UNIX-ROOT
5 host09 TDS-PAR-DEFAULT-UNIX-ROOT
以上是我从DataFrame中获得的输出的一种,现在,我正在寻找一种grep来自host_list.txt
文件的以下主机名的方法。
host01
host02
host03
host04
host05
host06
host07
host08
host09
任何想法都会很有帮助。
$./getcbk_srvlist_1_1.py | egrep "hosts044|hosts045"
InventoryReport.csv
52 host044 TDS-OTT-DEFAULT-UNIX-Root
25238 hosts045 TDS-DJ-DEFAULT-UNIX-ROOT
答案 0 :(得分:2)
我认为您在创建df
之后需要将host_list.txt
读入另一个数据框。
df2 = pd.read_csv('host_list.txt',header=None)
df2.columns = ['host_list']
df2
Out[13]:
host_list
0 host01
1 host02
2 host03
3 host04
4 host05
5 host06
6 host07
7 host08
8 host09
如果您随后希望基于与df
相同的主机对df2
进行子集设置,则可以使用pandas.DataFrame.isin
df = df[df['Target system address'].isin(df2.host_list.unique())]
哪个返回:
Target system address Safe
0 host01 TDS-PAR-DEFAULT-UNIX-ROOT
1 host06 TDS-OT-SCM-UNIX-ROOT
2 host09 TDS-PAR-DEFAULT-UNIX-ROOT