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
相关产品推荐
相关产品推荐

