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

基于Pandas提取列组合并统计出现次数的技术咨询

任务2:高效统计字典中各列的出现次数

用于统计的映射表格如下:

idcountrycityagesex
11NANNANNAN
218NANNAN

需求说明

需要基于上述映射表格,统计任务1生成的字典列表中各列的出现次数,要求方案高效,支持参数提取与迭代统计,避免繁琐的硬编码。

高效实现思路

先构建id到对应列的映射字典,再遍历任务1的结果列表,提取每个字典中的id值,关联映射表中的列并累加计数:

from collections import defaultdict

# 构造任务2的DataFrame(实际场景可从文件/数据库读取)
df_task2 = pd.DataFrame(
    [
        [1, 1, pd.NA, pd.NA, pd.NA],
        [2, 1, 8, pd.NA, pd.NA],
    ],
    columns=["id", "country", "city", "age", "sex"]
)

# 第一步:构建id到对应非NAN列的映射
id_to_cols = {}
for _, row in df_task2.iterrows():
    current_id = row["id"]
    # 获取当前id对应的非NAN列名(排除id列)
    relevant_cols = row.drop("id").dropna().index.tolist()
    id_to_cols[current_id] = relevant_cols

# 第二步:统计各列出现次数
column_counts = defaultdict(int)
for item in result_list:
    # 提取当前字典中所有id_qname_*对应的id值
    id_values = [val for key, val in item.items() if key.startswith("id_qname_")]
    # 遍历每个id,累加对应列的计数
    for id_val in id_values:
        for col in id_to_cols.get(id_val, []):
            column_counts[col] += 1

# 转换为普通字典查看结果
print(dict(column_counts))
# 输出:{'country': 3, 'city': 2}

方案优势

  • 映射关系动态构建,无需硬编码列名,扩展性强
  • 迭代过程逻辑清晰,时间复杂度为O(n+m)(n为任务1行数,m为任务2行数),效率较高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:09:23