You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

对Pandas DataFrame应用含日期格式的多条件时报KeyError问题求解

报错原因

报错为KeyError: 'Vulnerability Since',核心原因是列名拼写不一致:

  1. 代码第5行你已经读取并处理了列名为Vulnerable Since的日期列
  2. 但在后续conditions数组的第二个及之后所有条件中,你错误将该列名拼写为Vulnerability Since(多了-ity后缀),pandas无法在DataFrame中找到不存在的列,因此抛出异常。
解决方法

方法1:直接修正拼写错误

将conditions中所有df['Vulnerability Since']替换为df['Vulnerable Since']即可,修正后的完整代码如下:

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'] >= 7.5) & (df['Vulnerable Since'] <= critical),
    (df['Vulnerability CVSSv3 Score'] >= 7.5) & (df['Vulnerable Since'] > critical),
    (df['Vulnerability CVSSv3 Score'] >= 3.5) & (df['Vulnerability CVSSv3 Score'] < 7.5) & (df['Vulnerable Since'] <= severe),
    (df['Vulnerability CVSSv3 Score'] >= 3.5) & (df['Vulnerability CVSSv3 Score'] < 7.5) & (df['Vulnerable Since'] > severe),
    (df['Vulnerability CVSSv3 Score'] >= 0) & (df['Vulnerability CVSSv3 Score'] < 3.5) & (df['Vulnerable Since'] <= moderate),
    (df['Vulnerability CVSSv3 Score'] >= 0) & (df['Vulnerability CVSSv3 Score'] < 3.5) & (df['Vulnerable Since'] > 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")

方法2:规避后续拼写错误的优化方案

可以将常用列名提前赋值给变量,后续统一引用变量即可避免手误拼写问题,示例如下:

# 提前定义列名常量
DATE_COL = 'Vulnerable Since'
CVSS_COL = 'Vulnerability CVSSv3 Score'

# 后续引用统一用变量
df[DATE_COL] = pd.to_datetime(df[DATE_COL], format='%Y/%m/%d')
# conditions里也直接用df[DATE_COL]、df[CVSS_COL]即可
辅助验证技巧

读取csv后可以先执行print(df.columns.tolist())打印所有列名,确认列名拼写与后续引用一致,提前发现类似问题。

内容的提问来源于stack exchange,提问作者spider23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:57:00