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

DataFrame添加自动索引报错,事件统计次数始终为1的求助

问题修复:DC服务器事件日志统计脚本优化

输入数据

action_list = ['logged-out', 'logged-out', 'logged-out', 'Directory Service Access', 'Directory Service Access', 'Directory Service Access', 'logged-out', 'logged-out', 'Directory Service Access', 'created-process', 'created-process']
code_list = ['4634', '4634', '4634', '4662', '4662', '4662', '4634', '4634', '4662','4688']
event_code_list = ['4662', '4688']

原脚本核心问题

  • 字典去重丢失数据:dict(zip(action_list, code_list))会自动去重相同的action键,原列表中多次出现的事件被合并成单个键值对,导致后续统计次数始终为1。
  • 索引处理冗余且错误:手动创建RangeIndex完全多余,还会在melt操作后引发索引不匹配的ValueError。
  • 次数统计逻辑错误:Counter(df)统计的是DataFrame列名的出现次数,而非原事件列表中事件的真实发生次数。

修复后的完整脚本

import pandas as pd
from collections import Counter

# 输入数据
action_list = ['logged-out', 'logged-out', 'logged-out', 'Directory Service Access', 'Directory Service Access', 'Directory Service Access', 'logged-out', 'logged-out', 'Directory Service Access', 'created-process', 'created-process']
code_list = ['4634', '4634', '4634', '4662', '4662', '4662', '4634', '4634', '4662','4688']
event_code_list = ['4662', '4688']

# 1. 用元组列表保存所有事件对,避免字典自动去重
event_pairs = list(zip(action_list, code_list))

# 2. 过滤出符合目标代码的事件
filtered_pairs = [pair for pair in event_pairs if pair[1] in event_code_list]

# 3. 统计每个(事件名称,事件代码)组合的发生次数
event_counts = Counter(filtered_pairs)

# 4. 转换为DataFrame并调整结构
new_df = pd.DataFrame(event_counts.items(), columns=['Event_Code', 'Count'])
# 拆分事件名称和代码列
new_df[['Event', 'Code']] = pd.DataFrame(new_df['Event_Code'].tolist(), index=new_df.index)
# 调整列顺序并删除临时列
new_df = new_df[['Event', 'Code', 'Count']]

# 5. HTML输出逻辑优化
if new_df.empty:
    # 无事件时生成占位DataFrame
    empty_df = pd.DataFrame({
        'Event': ['-'],
        'Code': ['-'],
        'Count': ['-']
    })
    html = empty_df.to_html(index=False)
else:
    # 输出时隐藏默认索引,让HTML更整洁
    html = new_df.to_html(index=False)

# 写入HTML文件
with open('alerts.html', 'w') as f:
    f.write(html)

# 打印结果验证
print(new_df)

修复效果说明

运行后将输出正确统计次数的DataFrame:

Event  Code  Count
0  Directory Service Access  4662      4
1           created-process  4688      2
  • 保留了所有重复事件的统计次数
  • 避免了索引相关的错误
  • HTML输出自动隐藏冗余索引,格式更美观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:10:16