我正在尝试使用Python的Pandas模块从csv文件中选择一个特定的列,如果列Hostname
为Group
或{{{}},我希望获取SJ
1}}。
以下是我正在尝试但不打印任何东西:
DC
import csv
import pandas as pd
pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 5000)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 500)
low_memory=False
data = pd.read_csv('splnk.csv', usecols=['Hostname', 'Group'])
for line in data:
if 'DC' and 'SJ' in line:
print(line)
变量包含data
&的值。 Hostname
列如下:
Group
注意:在打印数据时,它会剥离数据并且不会打印完整的数据。
PS:我使用11960 NaN DB-Server
11961 DC Sap-Server
11962 SJ comput-server
来获取终端上的完整数据!
答案 0 :(得分:0)
for line in data:
不会遍历行内容,而是迭代列名。 Pandas有几种通过内容过滤列的好方法。
例如,您可以使用df.Series.isin()
选择符合以下几个值之一的行:
print data[data['Group'].isin(['DC', 'SJ'])]['Hostname']
如果迭代行很重要,可以使用df.iterrows()
:
for index, row in data.iterrows():
if row['Group'] == 'DC' or row['Group'] == 'SJ':
print row['Hostname']
如果您刚刚开始使用Pandas,我建议您尝试使用tutorial来熟悉基本结构。
答案 1 :(得分:0)
试试这个:
import csv
import pandas as pd
import numpy as np #You can comment numpy as it is not needed.
low_memory=False
data = pd.read_csv('splnk.csv', usecols=['Hostname', 'Group'])
hostnames = data[(data['Group']=='DC') | (data['Group']=='SJ')]['Hostname'] # corrected the `hostname` to `Hostname`
print(hostnames)