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

如何从dataframe python3获取特定列的Pandas用户输入

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

    我使用PANDAS Dataframe从CSV文件中获取数据,并选择所需的列数据,该列数据工作正常。然而,在 hostData 我要找的数据帧 (data['Safe']=='KDS-PDC-DEFAULT-UNIX-ROOT') 所以,我有多个保险箱,如下所述 CyberArk Safes 因此,在doc字符串中,我更希望在用户输入的代码上手动输入安全名称。

    同时请求用户输入提供安全名称,如果它可以显示文档字符串中的当前安全名称。

    #!/grid/common/pkgs/python/v3.6.1/bin/python3
    from __future__ import print_function
    from signal import signal, SIGPIPE, SIG_DFL
    signal(SIGPIPE,SIG_DFL)
    import csv
    import pandas as pd
    
    ##### Python pandas, widen output display to see more columns. ####
    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)
    
    ############# CyberArk Safes ################
    '''  
    KDS-KDC-DEFAULT-UNIX-ROOT
    KDS-PDC-DEFAULT-UNIX-ROOT
    KDS-CDC-DEFAULT-UNIX-ROOT
    '''
    
    ################# PANDAS Extraction ###########
    data = pd.read_csv('/home/karn/plura/Test/Python_Panda/InventoryReports06.csv', usecols=['Platform ID', 'Safe', 'Target system address', 'Failure reason'])
    hostData = data[(data['Safe']=='DC') | (data['Safe']=='KDS-PDC-DEFAULT-UNIX-ROOT')][['Safe', 'Target system address']]
    hostData.reset_index(level=0, drop=True)
    

    预期产出:

    $ python CyberSafe.py
     The Current SafeName Available are:
     KDS-KDC-DEFAULT-UNIX-ROOT
     KDS-PDC-DEFAULT-UNIX-ROOT
     KDS-CDC-DEFAULT-UNIX-ROOT
    
     Please Enter the SafeName: 
    

    如有任何帮助或建议,将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  1
  •   gyoza    6 年前
    1. 要显示候选项,请创建一个函数(例如。 print_candidates() )显示文档字符串。
    2. 要获取用户输入,请使用 input() 储存在 SafeName 并进一步使用它创建一个掩码来过滤数据帧。

    因此,代码的后面部分如下所示:

    def print_candidates():
        '''  
        KDS-KDC-DEFAULT-UNIX-ROOT
        KDS-PDC-DEFAULT-UNIX-ROOT
        KDS-CDC-DEFAULT-UNIX-ROOT
        '''
        print("The Current SafeName Available are:")
        print(print_candidates.__doc__)
    
    print_candidates()
    
    ################# PANDAS Extraction ###########
    data = pd.read_csv('/home/karn/plura/Test/Python_Panda/InventoryReports06.csv', usecols=['Platform ID', 'Safe', 'Target system address', 'Failure reason'])
    SafeName = str(input("Please Enter the SafeName:"))
    hostData = data.loc[(data['Safe']=='DC') | (data['Safe']==SafeName)][['Safe', 'Target system address']]
    hostData = hostData.reset_index(drop=True)