Pandas创建拼接新列:长度超阈值时自动重置计数器
Pandas实现带长度触发重置规则的计数拼接列
实现逻辑
逐行处理时维护一个从1起始的计数器,规则如下:
- 先拼接每行A列、B列值得到基础字符串,计算基础串长度
- 校验「基础串长度 + 当前计数器值转字符串后的长度」,如果总长度超过11,立刻将计数器重置为1
- 拼接基础串和当前计数器值作为该行C列的结果,之后计数器自增1,供下一行使用
完整可运行代码
import pandas as pd # 构造测试用DataFrame df = pd.DataFrame({ 'A': ['john', 'jacob', 'juli', 'jason', 'alan'], 'B': ['doe', 'smith', 'patel', 'bourne', 'turing'] }) # 初始化计数器、结果存储列表 counter = 1 c_col = [] for _, row in df.iterrows(): base = row['A'] + row['B'] # 长度超限则重置计数器 if len(base) + len(str(counter)) > 11: counter = 1 # 拼接当前行C值 c_col.append(f"{base}{counter}") # 计数器自增 counter += 1 df['C'] = c_col
结果验证
执行代码后打印df,输出和预期完全一致:
A B C 0 john doe johndoe1 1 jacob smith jacobsmith2 2 juli patel julipatel3 3 jason bourne jasonbourne1 4 alan turing alanturing2
注:该逻辑依赖逐行的状态传递,当数据集规模在百万行以内时,逐行遍历的可读性和调试便捷性远高于复杂的矢量化写法,性能完全可以满足日常需求。
内容的提问来源于stack exchange,提问作者Mason Williams
相关产品推荐
相关产品推荐

