我是Python新手,请原谅。回到我接触PHP / MySQL时。我可以根据任何参数遍历一个表。让我们简单说一下ID。找到ID后,您可以将每一列放入变量中。容易...
所以我创建了一个CSV并使用Pandas加载到数据框中。
switch_id,vlan_num,vlan_desc,int_vlan,int_vlan_ip,int_vlan_mask
1,20,Legal,20,192.168.20.1,255.255.255.0
1,21,HumanResources,21,192.168.21.1,255.255.255.0
2,20,Legal,20,192.168.20.2,255.255.255.0
2,21,HumanResources,21,192.168.21.2,255.255.255.0
我正在使用的代码看起来像是测试,以了解其功能。
import pandas as pd
df = pd.read_csv('/Users/thenk83/Desktop/PythonCode/vlan_database.txt')
for i in df:
print(df[i][2])
选项是这样的:
1
22
Finance
22
192.168.22.1
255.255.255.0
如何做到这一点,以便可以使用row ['switch_id'],row ['vlan_num']等。基本上,我想将行中的每一列放入一个变量中。我想自己调出每个变量。我不想将整个行放在一个变量中。我可以看到如何调出该行,但是如何选择该列。太困惑了。
基本上,我想配置多个Cisco交换机。遍历数据帧中的每一行,然后将数据插入到需要的配置中。
我可以用Php和MySQL轻松地做到这一点,但这不是一回事。所以我对如何做到这一点感到困惑。
我不希望复杂。如果您可以帮助我,那么尽可能简单就好。我想了解。
答案 0 :(得分:1)
IIUC,我认为您正在寻找DataFrame.iterrows
。
这将提供与您的解决方案相同的输出:
value_list = ['1']
df = df[df.switch_id.isin(value_list)]
for idx, row in df.iterrows():
print(row['vlan_num'],
row['vlan_desc'],
row['int_vlan'],
row['int_vlan_ip'],
row['int_vlan_mask'])
答案 1 :(得分:0)
经过反复试验,我发现了这一点。我最终使用了“ .iloc”。
import pandas as pd
df = pd.read_csv('/Users/thenk83/Desktop/PythonCode/vlan_database.txt')
value_list = ['1']
df = df[df.switch_id.isin(value_list)]
for i in range(len(df)):
vlan_num = df.iloc[i,1]
vlan_name = df.iloc[i,2]
int_vlan = df.iloc[i,3]
int_vlan_ip = df.iloc[i,4]
int_vlan_mask = df.iloc[i,5]
print(vlan_num,vlan_name,int_vlan,int_vlan_ip,int_vlan_mask)
这可能不是最干净的方法,但现在可以使用。但这给了我:
(20, 'Legal', 20, '192.168.20.1', '255.255.255.0')
(21, 'HumanResources', 21, '192.168.21.1', '255.255.255.0')
(22, 'Finance', 22, '192.168.22.1', '255.255.255.0')
(23, 'Facilities', 23, '192.168.23.1', '255.255.255.0')
(24, 'InformationTechnology', 24, '192.168.24.1', '255.255.255.0')
(25, 'Engineering', 25, '192.168.25.1', '255.255.255.0')
而这正是我想要的!
答案 2 :(得分:0)
由于您没有对数据进行任何数学或统计运算,所以为什么不使用csv
模块。例如,根据您的代码:
Input_file.csv
switch_id,vlan_num,vlan_desc,int_vlan,int_vlan_ip,int_vlan_mask
1,20,Legal,20,192.168.20.1,255.255.255.0
1,21,HumanResources,21,192.168.21.1,255.255.255.0
2,20,Legal,20,192.168.20.2,255.255.255.0
2,21,HumanResources,21,192.168.21.2,255.255.255.0
Answer.py
import csv
input_file_name = "Input_file.csv"
with open(input_file_name, newline='') as input_file:
csv_reader = csv.DictReader(input_file)
for row in csv_reader:
print(row['vlan_num'],
row['vlan_desc'],
row['int_vlan'],
row['int_vlan_ip'],
row['int_vlan_mask'])