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

如何基于类别计数排序为Pandas DataFrame创建标签列?

按类别计数排序生成标签字典并添加至Pandas DataFrame

问题描述

现有包含category列的Pandas DataFrame,数据如下:

import pandas as pd
data = {'category': ['POLITICS','WELLNESS', 'ENTERTAINMENT', 'TRAVEL','POLITICS', 'ENTERTAINMENT','POLITICS'],
       'dates': ["2013-01-31","2013-01-31","2013-02-02", "2013-02-02","2013-02-03", "2013-02-03", "2013-02-04"]}
df1 = pd.DataFrame(data, columns=['category', 'dates'])

需要生成按类别计数从多到少分配0、1、2...序号的标签字典,用于为DataFrame添加label列。已通过df1["category"].value_counts().to_dict()得到计数字典:{'POLITICS': 3, 'ENTERTAINMENT': 2, 'WELLNESS': 1, 'TRAVEL': 1}

解决方案

步骤1:获取按计数降序排列的类别列表

value_counts()方法默认按计数降序返回结果,其index属性直接给出排序后的类别序列:

sorted_categories = df1['category'].value_counts().index

步骤2:生成标签字典

用enumerate遍历排序后的类别,将每个类别映射为从0开始的整数:

label_dict = {cat: idx for idx, cat in enumerate(sorted_categories)}

生成的字典为:{'POLITICS': 0, 'ENTERTAINMENT': 1, 'WELLNESS': 2, 'TRAVEL': 3}

步骤3:添加label列到DataFrame

使用map()方法完成标签映射,并用fillna()处理未知类别(示例中默认填充6,可按需调整):

df1['label'] = df1['category'].map(label_dict).fillna(6).astype(int)

完整代码示例

import pandas as pd

# 创建DataFrame
data = {'category': ['POLITICS','WELLNESS', 'ENTERTAINMENT', 'TRAVEL','POLITICS', 'ENTERTAINMENT','POLITICS'],
       'dates': ["2013-01-31","2013-01-31","2013-02-02", "2013-02-02","2013-02-03", "2013-02-03", "2013-02-04"]}
df1 = pd.DataFrame(data, columns=['category', 'dates'])

# 生成按计数排序的标签字典
sorted_categories = df1['category'].value_counts().index
label_dict = {cat: idx for idx, cat in enumerate(sorted_categories)}

# 添加label列
df1['label'] = df1['category'].map(label_dict).fillna(6).astype(int)

# 输出结果
print(df1)

运行后输出的正确结果:

category        dates  label
0        POLITICS  2013-01-31      0
1        WELLNESS  2013-01-31      2
2  ENTERTAINMENT  2013-02-02      1
3          TRAVEL  2013-02-02      3
4        POLITICS  2013-02-03      0
5  ENTERTAINMENT  2013-02-03      1
6        POLITICS  2013-02-04      0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:37:16