如何在Pandas中实现字符串模板的列关联与固定值替换?
解决方案
方法一:逐行使用apply处理(最直观)
直接针对col2列,利用apply逐行获取对应行的fname值,配合format完成双占位符替换:
data['col2'] = data.apply(lambda row: row['col2'].format(name=row['fname'], year=2022), axis=1)
执行后就能得到目标结果:
fname col2 index 1 john my name is john, and today is 2022 2 mike my name is mike, and today is 2022
方法二:用str.format_map批量处理
这种方式更贴合Pandas字符串操作的特性,通过元素的索引关联对应行的fname值:
data['col2'] = data['col2'].str.format_map(lambda x: { 'name': data.loc[x.name, 'fname'], 'year': 2022 })
原代码报错原因
你用的applymap会遍历DataFrame里的每一个元素(包括fname列的纯字符串),而且它无法在处理col2时获取当前行的fname值——你只传入了year=2022,但col2里的{name}没有对应参数,因此触发KeyError。
内容的提问来源于stack exchange,提问作者bltSandwich21
相关产品推荐
相关产品推荐

