您好, 我希望有一个人可以帮助我。我真的是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")
df_por_fecha = df.loc["2020-05-13", ["IP_Address"]]
我只能获得所需的列,但不知道如何将那些“ IP_Address”放入列表中。 我尝试了一些“ tolist()”命令,但是没有运气。
我不知道我的方法是否正确。 任何帮助,将不胜感激。 直到上周我才用python写过一行,而我仍在尝试学习所有这些功能。 预先感谢。
答案 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']
我确信会有几种方法可以做到这一点,也许这不是最好的方法,但是我可以得到我需要的清单。 无论如何,如果有人有任何建议,我将改进代码。 我在日期时间和时间戳之间有一些问题,这就是我解决问题的方式。