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

如何为重复列值追加递增数值并设置为行名?

解决思路与代码实现

要实现给Column A的重复值添加递增序号并设为行名的需求,用pandas可以轻松完成,步骤如下:

  • 给每个Column A的分组生成递增序号
  • 根据分组大小判断是否需要拼接序号(仅重复值添加序号)
  • 将处理后的列设为行索引,保留Column B

完整代码

import pandas as pd
import numpy as np

# 构造输入数据(或直接读取你的数据源)
df = pd.DataFrame({
    'Column A': ['A', 'B', 'B', 'D', 'E', 'E', 'E'],
    'Column B': [12, 34, 56, 78, 90, 120, 456]
})

# 1. 生成每组内的递增序号(从1开始)
df['group_count'] = df.groupby('Column A').cumcount() + 1

# 2. 拼接生成行名列:仅当该组有重复值时添加序号
df['row_name'] = np.where(
    # 获取每个分组的总数量,判断是否大于1
    df.groupby('Column A')['Column A'].transform('size') > 1,
    # 拼接原列值和序号
    df['Column A'] + '.' + df['group_count'].astype(str),
    # 无重复值则保留原列值
    df['Column A']
)

# 3. 设置行索引,清理多余列
result_df = df.set_index('row_name').drop(['Column A', 'group_count'], axis=1)
# 可选:将索引列名设为空,匹配预期输出格式
result_df.index.name = ''

print(result_df)

输出结果

Column B
             12
B.1         34
B.2         56
D           78
E.1         90
E.2        120
E.3        456

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:25:16