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

如何基于一个DataFrame的分类规则自动为另一个DataFrame分类?

基于已有分类规则为DataFrame自动分类

问题场景

现有两个DataFrame:

分类规则表(df1)

letters1Classification
Avowel
Bconsonate
Cconsonate
Dconsonate
Evowel

需要分类的目标表(df2)

letters2Classification
L
K
O
U
I

需根据df1的分类规则,自动为df2的字母完成分类。


解决方案

以下代码可直接在Colab环境中运行(Colab已预装pandas,无需额外安装):

步骤1:构造示例DataFrame(可替换为你实际的数据集)

import pandas as pd

# 规则表
df1 = pd.DataFrame({
    'letters1': ['A', 'B', 'C', 'D', 'E'],
    'Classification': ['vowel', 'consonate', 'consonate', 'consonate', 'vowel']
})

# 目标表
df2 = pd.DataFrame({
    'letters2': ['L', 'K', 'O', 'U', 'I'],
    'Classification': ['', '', '', '', '']
})

情况1:严格匹配规则表中已有的字母

仅对df1中出现过的字母分类,未出现的字母保持空值:

# 创建字母-分类映射字典
class_map = df1.set_index('letters1')['Classification'].to_dict()

# 为df2填充分类
df2['Classification'] = df2['letters2'].map(class_map).fillna(df2['Classification'])

执行后df2结果:

letters2Classification
L
K
O
U
I

情况2:推断通用分类规则(推荐)

观察df1的规则,元音为A、E,辅音为B、C、D,符合英文元音(A/E/I/O/U)、其余为辅音的通用规则,因此补充完整元音集合后分类:

# 从df1提取已有元音,补充通用元音
vowels = set(df1[df1['Classification'] == 'vowel']['letters1'])
vowels.update({'O', 'U', 'I'})

# 定义分类逻辑:元音返回vowel,其余返回consonate
def classify(letter):
    return 'vowel' if letter in vowels else 'consonate'

# 应用到df2
df2['Classification'] = df2['letters2'].apply(classify)

执行后df2结果:

letters2Classification
Lconsonate
Kconsonate
Ovowel
Uvowel
Ivowel

内容的提问来源于stack exchange,提问作者0binary Name1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:35:26