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

如何使用Pandas将长行值编码为包含前一列值的短名称

Pandas实现长行值缩短需求的方案如下:

场景假设

假设你的数据集前一列列名为prev_col,待缩短的长值列名为long_col,参考样例如下:

原始数据样例:

prev_collong_col
水果山东烟台红富士苹果当季现摘脆甜多汁无农药残留
水果海南三亚金煌芒核薄肉厚香甜无丝
电子产品2024款14英寸M3芯片8G内存512G固态硬盘笔记本电脑

预期输出效果(短值由前一列值+组内唯一标识组成):

prev_collong_colshort_col
水果...水果_1
水果...水果_2
电子产品...电子产品_1

实现方案

方案1:同前一列值分组生成递增序号后缀(最高效,适合海量数据)

用Pandas内置函数实现,无需逐行遍历,千万级数据可秒级运行:

import pandas as pd

# 生成短名列,也可以直接赋值给long_col覆盖原长值
df['short_col'] = df.groupby('prev_col').cumcount().add(1).astype(str).radd(df['prev_col'] + '_'

方案2:相同长值对应固定短名(避免重复值对应不同短名)

如果要求同一个长值多次出现时,需要始终对应同一个短名,可先生成映射表再匹配:

# 生成(prev_col, long_col)组合唯一映射
name_map = df.drop_duplicates(['prev_col', 'long_col']\
             .assign(short_col = lambda x: x.groupby('prev_col').cumcount().add(1).astype(str).radd(x['prev_col'] + '_')\
             .set_index(['prev_col', 'long_col'])['short_col']

# 映射回原数据集
df['short_col'] = df.set_index(['prev_col', 'long_col']).index.map(name_map)

方案3:自定义后缀规则(比如用哈希值做后缀)

如果需要短名和内容关联、不依赖序号顺序,可以自定义生成规则:

import hashlib

def gen_short_name(row):
    # 可根据需求自定义拼接规则
    hash_suffix = hashlib.md5(row['long_col'].encode()).hexdigest()[:6]
    return f"{row['prev_col']}_{hash_suffix}"

df['short_col'] = df.apply(gen_short_name, axis=1)

注意事项

  • 如果需要直接替换原长值列,把赋值语句左侧的short_col改为原长值列名即可
  • 可根据业务需求调整短名的拼接规则,比如添加固定前缀、调整序号/哈希值长度等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:09:03