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

Pandas DataFrame列字符串解析:生成单词-类别映射字典

解决Pandas字符串列转单词-类别映射字典的问题

你用ast.literal_eval报错是因为你的字符串格式根本不是合法的Python字面量(比如字典、列表的格式),这个方法只适用于解析符合Python语法的字符串,显然你的数据格式不匹配,换拆分字符串的方式就能解决。

处理步骤:

  • 先把每个单元格的字符串按空格拆分成单词|类别的独立单元
  • 再把每个单元按|拆分成单词和对应类别
  • 遍历所有单元,构建字典(自动去重,重复单词会保留最后一次出现的类别;如果要处理多类别可以用列表存储)

代码示例

假设你的DataFrame结构如下:

import pandas as pd

df = pd.DataFrame({
    'col': [
        'word1|category1 word2|category2',
        'word3|category3 word4|category4 word2|category2',
        'word1|category1 word4|category4 word3|category3'
    ]
})

方法1:构建唯一单词到类别的字典(重复单词覆盖)

word_category_map = {}

for s in df['col']:
    # 按空格拆分出每个word|category对
    for pair in s.split():
        word, category = pair.split('|')
        word_category_map[word] = category

print(word_category_map)

输出结果:

{'word1': 'category1', 'word2': 'category2', 'word3': 'category3', 'word4': 'category4'}

方法2:处理单词对应多个类别的情况(收集所有不重复类别)

如果存在同一个单词对应不同类别的场景,可以用defaultdict来收集所有类别:

from collections import defaultdict

word_category_map = defaultdict(list)

for s in df['col']:
    for pair in s.split():
        word, category = pair.split('|')
        # 避免重复添加同一类别
        if category not in word_category_map[word]:
            word_category_map[word].append(category)

# 转换为普通字典
word_category_map = dict(word_category_map)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:05:07