#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 и хочу исследовать и расширять свои знания.