Ошибка ключа при применении с несколькими условиями, включая формат даты для фрейма данных Pandas

#python #pandas #dataframe #numpy

Вопрос:

Я пытаюсь автоматизировать этот сценарий, но у меня возникли некоторые проблемы, связанные со столбцом даты.

Вот мой код:

 import pandas as pd import numpy as np  df = pd.read_csv("Vulns_110421.csv") df['Vulnerable Since'] = pd.to_datetime(df['Vulnerable Since'], format='%Y/%m/%d') critical = pd.to_datetime('2021-10-2') severe = pd.to_datetime('2021-9-2') moderate = pd.to_datetime('2021-8-02')  conditions = [  (df['Vulnerability CVSSv3 Score'] gt;= 7.5) amp; (df['Vulnerable Since'] lt;= critical),  (df['Vulnerability CVSSv3 Score'] gt;= 7.5) amp; (df['Vulnerability Since'] gt; critical),  (df['Vulnerability CVSSv3 Score'] gt;= 3.5) amp; (df['Vulnerability CVSSv3 Score'] lt; 7.5) amp; (df['Vulnerability Since'] lt;= severe),  (df['Vulnerability CVSSv3 Score'] gt;= 3.5) amp; (df['Vulnerability CVSSv3 Score'] lt; 7.5) amp; (df['Vulnerability Since'] gt; severe),  (df['Vulnerability CVSSv3 Score'] gt;= 0) amp; (df['Vulnerability CVSSv3 Score'] lt; 3.5) amp; (df['Vulnerability Since'] lt;= moderate),  (df['Vulnerability CVSSv3 Score'] gt;= 0) amp; (df['Vulnerability CVSSv3 Score'] lt; 3.5) amp; (df['Vulnerability Since'] gt; moderate) ] values = ['Critical', 'Critical_Past_Due', 'Severe', 'Severe_Past_Due', 'Moderate', 'Moderate_Past_Due'] df['Kratos_Vuln_Severity'] = np.select(conditions, values)  df.to_excel("Vulns_110421-B.xlsx")  

Ниже приведена ошибка, которую я получаю.

 Traceback (most recent call last):  File "C:Users****DocumentsGitHubpythonvenvlibsite-packagespandascoreindexesbase.py", line 3361, in get_loc  return self._engine.get_loc(casted_key)  File "pandas_libsindex.pyx", line 76, in pandas._libs.index.IndexEngine.get_loc  File "pandas_libsindex.pyx", line 108, in pandas._libs.index.IndexEngine.get_loc  File "pandas_libshashtable_class_helper.pxi", line 5198, in pandas._libs.hashtable.PyObjectHashTable.get_item  File "pandas_libshashtable_class_helper.pxi", line 5206, in pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: 'Vulnerability Since'  The above exception was the direct cause of the following exception:  Traceback (most recent call last):  File "C:Users****AppDataRoamingJetBrainsPyCharmCE2021.2scratchesscratch_5.py", line 12, in lt;modulegt;  (df['Vulnerability CVSSv3 Score'] gt;= 7.5) amp; (df['Vulnerability Since'] gt; critical),  File "C:Users****DocumentsGitHubpythonvenvlibsite-packagespandascoreframe.py", line 3458, in __getitem__  indexer = self.columns.get_loc(key)  File "C:Users****DocumentsGitHubpythonvenvlibsite-packagespandascoreindexesbase.py", line 3363, in get_loc  raise KeyError(key) from err KeyError: 'Vulnerability Since'  

Комментарии:

1. У вас нет именованного столбца Vulnerability Since . Все так просто.

2. Похоже, у вас нет 'Vulnerability Since' столбца во фрейме данных (условие 2 (индекс 1)). Должно ли это быть 'Vulnerable Since' так ?

3. Спасибо! это решает мою проблему.

4. Я заставил свой сценарий работать. Спасибо Генри. Есть ли какой-нибудь эффективный способ сделать это? Я изучаю python и хочу исследовать и расширять свои знания.