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

Pandas字符串列处理:为小数点前相同值添加补零递增计数器

处理Pandas DataFrame中STRING类型列的重复前缀数值,生成递增后缀

给定一个包含STRING类型列HOURCENTSEG的Pandas DataFrame,原始数据如下:

HOURCENTSEG(string-column)
070026.16169
070026.16169
070026.16169
070026.16169
070052.85555
070052.85555
070109.43620
070202.56430
070202.56431
070202.56434
070202.56434

需要按照以下规则处理该列:当小数点前的数值相同时,将小数点后的部分替换为左侧补零的5位递增计数器,单个值的后缀固定为00001。处理后的预期结果如下:

HOURCENTSEG (string-column)
070026.00001
070026.00002
070026.00003
070026.00004
070052.00001
070052.00002
070109.00001  (若仅一个值则为00001)
070202.00001
070202.00002
070202.00003
070202.00004

实现代码

import pandas as pd

# 创建示例DataFrame
data = {
    'HOURCENTSEG': [
        '070026.16169', '070026.16169', '070026.16169', '070026.16169',
        '070052.85555', '070052.85555', '070109.43620',
        '070202.56430', '070202.56431', '070202.56434', '070202.56434'
    ]
}
df = pd.DataFrame(data)

# 1. 提取小数点前的前缀部分
df['prefix'] = df['HOURCENTSEG'].str.split('.', expand=True)[0]
# 2. 按前缀分组,生成组内递增序号(从1开始)
df['counter'] = df.groupby('prefix').cumcount() + 1
# 3. 将序号格式化为5位左侧补零的字符串
df['formatted_counter'] = df['counter'].astype(str).str.zfill(5)
# 4. 拼接前缀和格式化后的计数器,生成新的HOURCENTSEG列
df['HOURCENTSEG'] = df['prefix'] + '.' + df['formatted_counter']
# 可选:删除中间辅助列
df = df.drop(['prefix', 'counter', 'formatted_counter'], axis=1)

print(df)

代码说明

  • 提取前缀:通过str.split('.', expand=True)[0]拆分字符串,获取小数点前的部分作为分组依据。
  • 生成递增计数器:使用groupby('prefix').cumcount()获取组内的索引(从0开始),加1后得到从1开始的递增序号。
  • 格式化计数器:用str.zfill(5)将序号转换为5位字符串,不足5位时左侧补零。
  • 拼接结果:将前缀和格式化后的计数器用小数点连接,替换原列的值。

运行代码后,即可得到符合要求的处理结果。


内容的提问来源于stack exchange,提问作者Sergio Urrea González

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:09:10