如何在DataFrame中创建新列,按规则重组姓名并生成递增序号?
Pandas生成指定格式姓名标识的实现方案
核心步骤说明
- 拆分姓名:将「名+姓」的组合列拆分为单独的名和姓列
- 生成基础标识:提取姓氏前5个字符(不足则取全部)转小写,拼接名字前2个字符转小写
- 添加递增序号:对重复的基础标识从01开始生成两位递增序号,最终拼接成完整标识
代码实现
import pandas as pd # 示例DataFrame(替换为你的实际数据) df = pd.DataFrame({ 'full_name': ['John Smith', 'Peter Pan', 'John Smith', 'Alice Johnson', 'Peter Pan'] }) # 1. 拆分名和姓(按第一个空格分割) df[['first_name', 'last_name']] = df['full_name'].str.split(n=1, expand=True) # 2. 生成基础标识部分 df['base_id'] = df['last_name'].str[:5].str.lower() + df['first_name'].str[:2].str.lower() # 3. 生成两位递增序号并拼接最终标识 df['user_id'] = df['base_id'] + df.groupby('base_id').cumcount().add(1).apply(lambda x: f"{x:02d}") # 可选:删除中间辅助列 df = df.drop(['first_name', 'last_name', 'base_id'], axis=1) # 查看结果 print(df)
输出结果
full_name user_id 0 John Smith smithjo01 1 Peter Pan panpe01 2 John Smith smithjo02 3 Alice Johnson johnso01 4 Peter Pan panpe02
内容的提问来源于stack exchange,提问作者Thanos of Siberia
相关产品推荐
相关产品推荐

