如何基于一个DataFrame的分类规则自动为另一个DataFrame分类?
基于已有分类规则为DataFrame自动分类
问题场景
现有两个DataFrame:
分类规则表(df1)
| letters1 | Classification |
|---|---|
| A | vowel |
| B | consonate |
| C | consonate |
| D | consonate |
| E | vowel |
需要分类的目标表(df2)
| letters2 | Classification |
|---|---|
| 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结果:
| letters2 | Classification |
|---|---|
| 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结果:
| letters2 | Classification |
|---|---|
| L | consonate |
| K | consonate |
| O | vowel |
| U | vowel |
| I | vowel |
内容的提问来源于stack exchange,提问作者0binary Name1
相关产品推荐
相关产品推荐

