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

DataFrame列含逗号时如何转换为指定键值结构的字典

实现方案

你已经完成了DocFreq > 5的条件筛选,后续只需要处理DocID字段拆分、按指定键值对构造字典即可,不需要使用默认参数的to_dict()方法,两种可直接运行的方案如下:

  • 方案1:字典推导式实现(性能最优,推荐)
    先精简筛选结果,只保留需要的Term和DocID字段,再逐行拆分DocID构造字典:

    # 筛选符合条件的记录,仅保留需要的两个字段
    df_filtered = df[df['DocFreq'] > 5][['Term', 'DocID']]
    # 构造目标格式字典
    result = {
        term: doc_str.split(',')
        for term, doc_str in zip(df_filtered['Term'], df_filtered['DocID'])
    }
    

    注意:如果你的DocID字段逗号前后存在多余空格,可以把拆分逻辑替换为[doc.strip() for doc in doc_str.split(',')],避免生成的文档ID携带无效空格。

  • 方案2:Pandas原生方法实现
    先把DocID列的字符串提前拆分为列表,再转换为键值对字典:

    df_filtered = df[df['DocFreq'] > 5][['Term', 'DocID']]
    # 将DocID列的逗号分隔字符串拆分为列表
    df_filtered['DocID'] = df_filtered['DocID'].str.split(',')
    # 构造以Term为键、DocID列表为值的字典
    result = dict(zip(df_filtered['Term'], df_filtered['DocID']))
    

你之前直接调用df.to_dict()得到嵌套字典的原因是:该方法默认的orient参数为dict,会生成{列名: {行索引: 值}}的双层嵌套结构,自然不符合单键值对的需求。
两种方案最终输出的结构完全匹配你给出的示例格式,比如Term为Want to be with、DocID为doc100.txt,doc8311.txt,doc123.txt的记录,会被处理为"Want to be with": ["doc100.txt", "doc8311.txt", "doc123.txt"]的键值对。

内容的提问来源于stack exchange,提问作者Kiera.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:01:06