使用Pandas根据某些条件从列中提取值

时间:2018-04-04 16:47:47

标签: python-3.x pandas

我正在尝试使用Python的Pandas模块从csv文件中选择一个特定的列,如果列HostnameGroup或{{{}},我希望获取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 来获取终端上的完整数据!

2 个答案:

答案 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)