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

为Pandas DataFrame重复列值追加字符串以实现唯一标识

解决Pandas DataFrame中重复实验条件字符串的唯一标识问题

需求说明

现有存储实验数据的Pandas DataFrame,其中condition列是实验条件编码字符串,但未包含重复运行的标识,后续处理要求该列字符串必须唯一。数据特点:重复次数不固定,重复行不一定相邻。

示例输入

import pandas as pd

df = pd.DataFrame({
    'condition': ['a_td_13_f', 'a_td_13_f', 'a_hw_19_f', 'a_hw_19_f', 'a_hh_10_f', 'a_hh_10_f', 'a_hh_10_f'],
    'B': [2, 6, 9, 2, 1, 0, 5],
    'C': [0, 1, 2, 3, 4, 5, 6],
    'D': [0, 2, 4, 6, 8, 10, 12]
})

解决方案

利用Pandas的groupby()和cumcount()方法实现,步骤如下:

  1. 按condition列分组,对每组内的行进行累计计数(从0开始)
  2. 将计数结果加1得到运行次数,与原condition字符串拼接,生成唯一标识

完整代码:

# 生成每组内的运行序号(从1开始)
df['run_number'] = df.groupby('condition').cumcount() + 1

# 拼接生成唯一的condition字符串
df['condition'] = df['condition'] + '_r' + df['run_number'].astype(str)

# 可选:删除临时的run_number列
df = df.drop('run_number', axis=1)

处理后输出

condition  B  C   D
0  a_td_13_f_r1  2  0   0
1  a_td_13_f_r2  6  1   2
2  a_hw_19_f_r1  9  2   4
3  a_hw_19_f_r2  2  3   6
4  a_hh_10_f_r1  1  4   8
5  a_hh_10_f_r2  0  5  10
6  a_hh_10_f_r3  5  6  12

代码说明

  • groupby('condition').cumcount():对每个condition分组内的行分配从0开始的连续整数,不管行是否相邻,同一组的行都会被正确计数
  • 加1是为了让运行次数从1开始,符合示例中的_r1、_r2格式
  • 字符串拼接时需要将整数类型的run_number转为字符串,避免类型错误

内容的提问来源于stack exchange,提问作者Ben S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:01:07