【问题标题】:How to get a list from an excel column which matches an specific value如何从与特定值匹配的excel列中获取列表
【发布时间】:2020-05-15 07:47:33
【问题描述】:

excel example

你好团队, 我希望有一个人可以帮助我。我对python真的很陌生,我正在尝试实现一些关于我找不到我需要的确切答案的功能。 我有一个包含几列信息的excel。可以看图更好理解。 我正在尝试从一列中获取与另一列匹配的对象的列表。

这是文件(我删除了一些行和列以便更好地理解):

Centro                IP_Address    Verificado  Ejecutado   Puerto Router       
SW-Cepsa-040-1        10.201.40.94  OK          13-may          Fa0/1                   
SW-Cepsa-40_128-1     10.201.40.158 OK          13-may          Fa0/1                   
SWMarket000-1         10.200.0.251  OK          13-may          Fa0/23     
SWMarket000-2         10.200.0.252  OK          13-may                       
SWMarket000-3         10.200.0.253  OK          14-may                      
SW-Market-005-4       10.200.5.249  OK          15-may                      
SW-Market-005-1       10.200.5.251  OK          15-may                      
SW-Market-005-2       10.200.5.252  OK          15-may                      
SW-Market-005-3       10.200.5.253  OK          15-may                

我的目标是从与特定日期匹配的设备的 IP 地址中获取列表。 我需要该列表来连接设备以进行一些检查。 我已经能够手动创建这个列表并做我需要的事情,但我正在尝试改进这个过程并使其更加自动化。 这就是我此刻所拥有的。

df = pd.read_excel(path_file, index_col="Ejecutado")

loc fechas varias columnas

df_por_fecha = df.loc["2020-05-13", ["IP_Address"]]

loc una columna

我只能得到我需要的列,但不知道如何将这些“IP_Address”放入列表中。 我尝试了一些“tolist()”命令,但没有成功。

我不知道我是否走对了路。 任何帮助,将不胜感激。 直到上周我才用 Python 写过一行代码,我仍在努力学习所有这些特性。 提前致谢。

【问题讨论】:

    标签: python excel list dataframe


    【解决方案1】:

    我可以做到,所以我会发布答案,也许会帮助其他人。 我得到了这些程序的清单: 我们将变量设置为“今天”。 我已经替换了时间,因为“Ejecutado”中的日期是时间戳(它们不仅仅是日期,而是显示为 2020-05-15 00:00:00)

    >>> hoy = datetime.today()
    >>> hoy
    datetime.datetime(2020, 5, 15, 20, 53, 43, 593294)
    >>> hoy = hoy.replace(hour=0, minute=0, second=0, microsecond=0)
    

    我们创建一个布尔语句来检查“Ejecutado”列中的值是否等于“hoy”。

    es_hoy = df["Ejecutado"]==hoy
    

    我们比较所有的列表

    >>> print (es_hoy)
    0        True
    1        True
    2       False
    3       False
    4       False
            ...
    1381    False
    1382    False
    1383    False
    1384    False
    1385    False
    Name: Ejecutado, Length: 1386, dtype: bool
    

    然后,我们得到包含与今天日期匹配的信息的新数据框:

    >>> df_hoy = df[es_hoy]
    >>>
    >>>
    >>> df_hoy
                  Centro     IP_Address Verificado            Ejecutado  
    0     SW-Cepsa-040-1   10.201.40.94         OK  2020-05-15 00:00:00  
    1  SW-Cepsa-40_128-1  10.201.40.158         OK  2020-05-15 00:00:00  
    5      SW-Cepsa-41-1  10.201.41.158         OK  2020-05-15 00:00:00  
    6  SW-Cepsa-41_192-1  10.201.41.222         OK  2020-05-15 00:00:00  
    7      SW-Cepsa-42-1   10.201.42.30         OK  2020-05-15 00:00:00  
    8      SW-Cepsa-42-1   10.201.42.94         OK  2020-05-15 00:00:00  
    [6 rows x 111 columns]
    >>>
    >>>
    

    最后,我们将所有 IP 地址放在一个列表中。

    >>>
    devices = df_hoy["IP_Address"].tolist()
    >>>
    >>> print (devices)
    ['10.201.40.94', '10.201.40.158', '10.201.41.158', '10.201.41.222', '10.201.42.30', '10.201.42.94']
    

    我相信会有几种方法可以做到这一点,也许这不是最好的,但我可以得到我需要的列表。 无论如何,如果有人有任何建议,我会改进代码。 我在日期时间和时间戳之间遇到了一些问题,这就是我修复它们的方法。

    【讨论】:

      猜你喜欢
      • 2023-02-01
      • 2020-01-12
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 2023-03-10
      • 2017-06-15
      相关资源
      最近更新 更多