在单列Python Pandas中计算不同的值

时间:2018-07-16 14:42:27

标签: pandas python-3.6

在使用和研究pandas模块时,我遇到了通过pandas在单个列中计算不同值的解决方案,我使用了以下代码

  #!/bin/python3
    import csv
    import pandas as pd
    ## Display Settings
    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)
    pd.set_option('expand_frame_repr', True)
    ## Code extraction
    data = pd.read_csv('/home/karn/plura/Test/Python_Pnada/Cyber_July.csv', usecols=['Platform ID', 'Safe', 'Target system address', 'Failure reason'])
    hostData = data[data['Platform ID'].str.startswith("CS-Unix-")][data['Safe'].str.contains("^CS-.*DEFAULT-UNIX-ROOT$")] [['Platform ID', 'Safe', 'Target system address','Failure reason']]
    hostData.reset_index(level=0, drop=True)
    safeCount = hostData.Safe.value_counts()
    print(safeCount)

为列的不同值输出数据:

Safe                

CS-PAR-DEFAULT-UNIX-ROOT    2
CS-MOS-DEFAULT-UNIX-ROOT    1

该代码的整个原始数据示例如下:

           Platform ID                   Safe                          Target system address   Failure reason
    1000   CS-Unix-RootAccounts-SSH     CS-PAR-DEFAULT-UNIX-ROOT                  jjudet      First login - Unable to connect to machine. Ch...
    1003   CS-Unix-RootAccounts-SSH     CS-MOS-DEFAULT-UNIX-ROOT                  tts126      First login - Unable to connect to machine. Ch...
    1005   CS-Unix-RootAccounts-SSH     CS-PAR-DEFAULT-UNIX-ROOT                  dccamus      First login - Unable to connect to machine. Ch...

注意:上面的代码都可以正常工作,但是,如果我需要从空格分隔的另一列中计算出不同的值,例如失败原因下,我们该如何实现。

  

在这种情况下如何使以下工作正常进行:

safeCount = hostData."Failure reason".value_counts()

1 个答案:

答案 0 :(得分:2)

引用pandas DataFrame列的语法为:

要返回系列:

safeCount = hostData["Failure reason"].value_counts()

要返回一个数据框(即多列):

safeCount = hostData[["Failure reason", "Safe"]]

并将Series方法应用于dataFrame:

safeCount = hostData[["Failure reason", "Safe"]].apply(pd.Series.value_counts)