如何将DataFrame名称列内容拼接至对应行的位置列字符串
DataFrame逐行拼接字段内容的实现方法
针对逐行把name字段值拼接到position字段前、中间用.分隔的需求,有3种常用实现方案,按性能优先级排列:
1. 向量化字符串拼接(生产环境推荐,性能最优)
直接调用pandas内置的str.cat方法实现向量化拼接,全程无逐行循环,处理百万级数据也无性能压力:
df['position'] = df['name'].str.cat(df['position'], sep='.')
方法特性:
- 自动对齐同索引行的两个字段内容拼接,完全匹配你需要的
name.position格式 - 对非字符串类型的列兼容度高,拼接前会自动处理类型转换逻辑
2. 直接字符串运算(写法最简洁,全版本兼容)
只要两个目标列都是字符串类型,直接利用pandas列的逐元素运算规则做加法拼接,所有版本pandas都支持:
df['position'] = df['name'] + '.' + df['position']
如果列中存在数值类型内容,提前转成字符串即可避免类型报错:
df['position'] = df['name'].astype(str) + '.' + df['position'].astype(str)
3. apply逐行处理(灵活但性能差,适合复杂拼接逻辑)
如果后续拼接规则需要自定义分支判断,可以用apply逐行取值操作,但简单拼接场景下不推荐,十万行以上的数据处理速度会比前两种方法慢两个数量级:
df['position'] = df.apply(lambda row: f"{row['name']}.{row['position']}", axis=1)
注意:以上三种方法执行后,输出的DataFrame结构和示例中的目标效果完全一致,无需额外调整行列顺序。
内容的提问来源于stack exchange,提问作者fifigoblin
相关产品推荐
相关产品推荐

