如何从与特定值匹配的Excel列中获取列表

时间:2020-05-15 07:47:33

标签: python excel list dataframe

excel example

您好, 我希望有一个人可以帮助我。我真的是python的新手,我正在尝试实现一些有关我找不到所需确切答案的功能。 我有几列信息的精通。您可以更好地了解图片。 我正在尝试从一列中获取与另一列匹配的对象的列表。

这是文件(为了更好的理解,我删除了一些行和列):

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写过一行,而我仍在尝试学习所有这些功能。 预先感谢。

1 个答案:

答案 0 :(得分:0)

我可以这样做,所以我会发布答案,也许会帮助其他人。 我得到了这些过程的清单: 我们将变量设置为“今天”。 我已经替换了时间,因为“ 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']

我确信会有几种方法可以做到这一点,也许这不是最好的方法,但是我可以得到我需要的清单。 无论如何,如果有人有任何建议,我将改进代码。 我在日期时间和时间戳之间有一些问题,这就是我解决问题的方式。