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

处理CIC IDS IOT 2023数据集时Lambda参数缺失引发TypeError

问题解决:Lambda参数不匹配与逻辑修正

报错原因

你的lambda函数定义了7个参数(a,b,c,d,e,f,g),但df['label'].apply()在处理时,只会把label列的单个元素值传给lambda,所以触发了"缺少6个位置参数"的错误——lambda期望7个输入,但实际只收到1个。

另外代码里还有个隐藏问题:startswith('Recon' or 'Vulnerability')这种写法逻辑错误,or在这里会返回第一个真值(也就是'Recon'),实际只会判断是否以'Recon'开头,不会检测'Vulnerability'。

修正后的代码

# 创建新的分类标签列
selected_data['new_label'] = selected_data['label'].apply(
    lambda x: 'DDoS' if x.startswith('DDoS') 
              else 'Mirai' if x.startswith('Mirai') 
              else 'Recon' if x.startswith(('Recon', 'Vulnerability')) 
              else 'Spoofing' if x.startswith(('DNS', 'MITM')) 
              else 'Benign' if x.startswith('Benign') 
              else 'Web' if x.startswith(('Browser', 'Backdoor', 'XSS', 'Uploading', 'Sql', 'Command')) 
              else 'BruteForce' if x.startswith('Dictionary') 
              else 'other',
    meta=('new_label', 'object')
)

# 计算结果
selected_data = selected_data.compute()
selected_data

关键修改点

  • 简化lambda参数:只保留一个参数x,代表label列的每个元素值
  • 修正多前缀判断逻辑:用startswith(('前缀1', '前缀2'))的写法,这是Python字符串startswith支持的多前缀检测方式,替代错误的or写法
  • 梳理条件顺序:确保每个分类条件按优先级依次判断,逻辑更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:10:08