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

如何让Pandas DataFrame显示数组未匹配项的0计数?

解决方法

你可以通过两种方式实现需求,确保输出包含数组中所有元素,不存在的项显示0:

方法一:提前将location2转为分类类型

在统计前把location2列设置为包含你数组所有元素的分类,这样分组统计时会自动包含所有分类项,不存在的计数直接为0:

import pandas as pd

# 定义数组元素
array = ['RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW', 'RegCreateKeyTransactedA', ...]

# 将location2转为分类类型,指定所有可能的类别
df['location2'] = pd.Categorical(df['location2'], categories=array, ordered=False)

# 统计每个进程调用各API的次数,自动包含所有类别
count = df.groupby(['Process_Name', 'location2']).size()

# 转换为宽格式,不存在的项自动填充0
temp = count.unstack(fill_value=0)
print(temp)

方法二:unstack后重新索引补0

如果不想修改原DataFrame的列类型,可以在转换为宽格式后,用reindex指定所有目标列并填充0:

import pandas as pd

# 定义数组元素
array = ['RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW', 'RegCreateKeyTransactedA', ...]

# 筛选包含指定API的行  
rels = df.loc[df['location2'].isin(array)]

# 统计每个进程调用各API的次数
count = rels.groupby(['Process_Name', 'location2']).size()

# 转换为宽格式后,重新索引并填充0
temp = count.unstack().reindex(columns=array, fill_value=0)
print(temp)

两种方法都能达成需求,第一种在数据量较大时更高效,因为不需要额外的索引重排操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:30:48