基于条件修改DataFrame值:将CUSTOM替换为带序号的对应值
解决方法:给重复的"CUSTOM"条目添加递增序号
没问题,我来帮你实现这个需求!核心思路是先定位所有目标条目,再给它们生成连续的序号并拼接成新值。
完整代码示例
import pandas as pd # 注意:避免用Python内置类型名(比如list)当变量名,这里改成lst lst = ['RK','G', 'CUSTOM', 'CUSTOM', 'KL', 'kj'] df = pd.DataFrame(lst, columns=['A']) # 步骤1:筛选出所有等于"CUSTOM"的行 mask = df['A'] == 'CUSTOM' # 步骤2:给这些行生成递增序号并替换原内容 df.loc[mask, 'A'] = 'CUSTOM' + (df[mask].groupby('A').cumcount() + 1).astype(str) # 查看结果 print(df)
输出结果
A 0 RK 1 G 2 CUSTOM1 3 CUSTOM2 4 KL 5 kj
代码解释
- 掩码筛选:
mask = df['A'] == 'CUSTOM'会生成一个布尔数组,标记哪些行的A列是"CUSTOM"。 - 生成递增序号:
df[mask].groupby('A').cumcount()会对筛选后的行(都是"CUSTOM",属于同一个组)从0开始计数,加1后就变成1、2、3...这样的连续序号。 - 拼接字符串:把序号转成字符串后和"CUSTOM"拼接,就能得到带序号的新值,再通过
df.loc[mask, 'A']把这些新值替换回原DataFrame的对应位置。
不管你有3个、5个还是更多的"CUSTOM",这个方法都会自动生成对应的CUSTOM1、CUSTOM2...CUSTOMn,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Venkatesh Malhotra
相关产品推荐
相关产品推荐

