代码之家  ›  专栏  ›  技术社区  ›  Karn Kumar

python pandas只从列中提取所需的列和所需的值

  •  1
  • Karn Kumar  · 技术社区  · 6 年前

    我想用 pandas 要分析我的csv文件,其中csv文件有多个列,但我只需要选择某些列。从我的csv文件中,我正在寻找 'Platform ID' ,这可能从 CS-Unix* 下一个是 'Target system address' 其中包含多个名称,可以是任何内容,因此我需要将整个值打印出来,另一列是 'Failure reason' 这又是一个症状,可能是任何需要打印出来的东西。

    我提到过 CS-Unix-* 因为它可能是 CS-Unix- 然而,在另一个领域,我选择了 * 将值打印为服务器名称可能会再次不同。

    我的数据格式是……

    Platform ID               Target system address       Failure reason
    CS-Unix-RootAccounts-SSH  Serer1                       xyz
    

    低于我正在尝试但不工作的内容。

    import csv
    import pandas as pd
    
    pd.set_option('display.height', None)
    pd.set_option('display.max_rows', None)
    pd.set_option('display.max_columns', None)
    pd.set_option('display.width', None)
    
    data = pd.read_csv('/home/karn/plura/Test/Python_Pnada/Cyber_July.csv', usecols=['Platform ID', 'Target system address', 'Failure reason'])
    #data.drop(data.index[0], inplace=True)
    hostnames = data[(data['Platform ID']=='CDS-Unix-*') | (data['Target system address'] == '*' )]['Failure reason']
    print(hostnames)
    

    请引导前进。

    1 回复  |  直到 6 年前
        1
  •  1
  •   gaganso    6 年前

    这应该为具有表单平台ID的所有行提供失败原因。 CS-Unix-* .

    hostnames = data[data['Platform ID'].str.startswith("CS-Unix-")][['Target system address','Failure reason']]

    startswith() 返回一个布尔值,指示以字符串开头的元素是否作为参数传递给它。