如何为重复列值追加递增数值并设置为行名?
解决思路与代码实现
要实现给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
相关产品推荐
相关产品推荐

