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

基于Pandas(Python)的交易数据文本分类实现求助

给交易数据DataFrame添加匹配标签列的解决方案

嘿,你的思路方向是对的,但得先明确基础标签词的范围——也就是那些单独作为description出现的词(比如foo、bar、baz)。从你的期望输出能看出来,像foobar这种组合成的单个词是要作为独立标签的,而foo bar这种空格分隔的多词则需要拆分后匹配基础标签。

下面是具体的实现步骤和代码:

1. 提取基础标签词

首先筛选出所有description是单个词的行,然后提取这些词的唯一值作为我们的基础标签集合:

import pandas as pd

# 构造你的示例数据
data = {
    'description': ['foo', 'bar', 'baz', 'foo bar', 'foobar', 'bar baz', 'bazbar'],
    'amount': [10, 5, 9, 12, 15, 20, 19]
}
df = pd.DataFrame(data)

# 提取单个词的description,生成基础标签集合
base_tags = set(df[df['description'].str.split().str.len() == 1]['description'].unique())

2. 编写函数生成tag列

我们可以写一个简单的自定义函数,对每一行的description做判断处理:

  • 如果是空格分隔的多词:拆分后筛选出属于基础标签的词,用逗号连接起来
  • 如果是单个词:直接用这个词本身作为tag(不管它是不是基础标签,比如foobar这种新词)
def get_tag(desc):
    words = desc.split()
    if len(words) > 1:
        # 多词情况:只保留在基础标签里的词,用逗号拼接
        matched_tags = [word for word in words if word in base_tags]
        return ', '.join(matched_tags)
    else:
        # 单个词情况:直接返回原词
        return desc

# 把函数应用到description列,生成tag列
df['tag'] = df['description'].apply(get_tag)

最终结果

运行上面的代码后,你就能得到完全符合期望的DataFrame:

description  amount        tag
0         foo      10        foo
1         bar       5        bar
2         baz       9        baz
3     foo bar      12  foo, bar
4      foobar      15     foobar
5     bar baz      20  bar, baz
6      bazbar      19     bazbar

小补充

如果你的实际数据里有标点符号、大小写不一致这类情况,可以先对description做简单清洗(比如去除标点、统一转成小写),再执行上面的步骤,结果会更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:06:38