#python-3.x #pandas
#python-3.x #pandas
Вопрос:
У меня есть 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
Выше приведен вид выходных данных, которые я получаю из моего фрейма данных, теперь я ищу способ, как своего рода grep использовать приведенные ниже имена хостов из host_list.txt
файла.
Ниже приведен 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
Комментарии:
1. Вы хотите прочитать другой второй файл после того, как прочитаете первый csv?
2. @LudoSchmidt, я этого не понял.
3. @dubbbdan, мне нужно выполнить поиск имен хостов во фрейме данных (df) из файла
host_list.txt
.4.вы могли бы сделать следующее, передать уникальные имена хостов в список, затем отфильтровать исходные данные с помощью
.loc.isin
data.loc[data['Target system address'].isin(mylist)]
5. @Datanovice, вот над чем работаем 🙂 , ты заметил это.
Ответ №1:
Я думаю, что после создания 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