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

Python实现DataFrame字符串列按类别名称分类并新增分类列

给Pandas DataFrame添加分类列的两种简单方法

嘿,你说的这个操作其实叫基于字典的映射/重分类,完全不用纠结术语,用Pandas分分钟就能搞定!我给你两种最常用的方案,都能完美实现你的需求:

方法一:字典映射(最直观推荐)

这种方法适合分类规则清晰固定的场景,先把颜色和对应的类别做成字典,再直接映射到DataFrame的新列里:

import pandas as pd

# 先创建你示例里的DataFrame
data = {
    'Color': ['blue', 'blue', 'blue', 'orange', 'orange', 'orange', 'red', 'red', 'red', 'green', 'green', 'green', 'green'],
    'Value': [43, 53, 25, 44, 33, 35, 66, 43, 65, 44, 35, 24, 34]
}
df = pd.DataFrame(data)

# 定义颜色到类别的映射字典
color_category = {
    'blue': 'Primary',
    'red': 'Primary',
    'orange': 'Secondary',
    'green': 'Secondary'
}

# 新增Category列,用map方法完成映射
df['Category'] = df['Color'].map(color_category)

print(df)

运行后每个颜色都会对应到正确的类别里。如果以后要新增颜色分类,直接修改字典就行,特别方便。

方法二:条件语句(灵活适配复杂规则)

如果你需要更灵活的判断(比如后续要加范围条件),可以用numpy.where或者df.loc来实现:

用numpy.where的写法:

import pandas as pd
import numpy as np

# 同样先创建示例DataFrame
data = {
    'Color': ['blue', 'blue', 'blue', 'orange', 'orange', 'orange', 'red', 'red', 'red', 'green', 'green', 'green', 'green'],
    'Value': [43, 53, 25, 44, 33, 35, 66, 43, 65, 44, 35, 24, 34]
}
df = pd.DataFrame(data)

# 用np.where判断:如果Color在原色列表里,就赋值Primary,否则Secondary
primary_colors = ['blue', 'red']
df['Category'] = np.where(df['Color'].isin(primary_colors), 'Primary', 'Secondary')

print(df)

用df.loc的写法(更直观的条件赋值):

import pandas as pd

data = {
    'Color': ['blue', 'blue', 'blue', 'orange', 'orange', 'orange', 'red', 'red', 'red', 'green', 'green', 'green', 'green'],
    'Value': [43, 53, 25, 44, 33, 35, 66, 43, 65, 44, 35, 24, 34]
}
df = pd.DataFrame(data)

# 先初始化Category列
df['Category'] = 'Secondary'
# 然后给原色的行赋值Primary
df.loc[df['Color'].isin(['blue', 'red']), 'Category'] = 'Primary'

print(df)

最终结果

不管用哪种方法,输出的DataFrame都会和你预期的一致:

Color  Value    Category
0      blue     43     Primary
1      blue     53     Primary
2      blue     25     Primary
3    orange     44  Secondary
4    orange     33  Secondary
5    orange     35  Secondary
6       red     66     Primary
7       red     43     Primary
8       red     65     Primary
9     green     44  Secondary
10    green     35  Secondary
11    green     24  Secondary
12    green     34  Secondary

总结一下:如果分类规则固定,优先用字典映射;如果需要更复杂的条件判断,选条件语句的方法就好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:52:32