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

Python 3.11:如何用DataFrame列值替换描述模板变量?

解决方案

这里有几种实用方法可以实现将DataFrame列值填充到描述模板的需求:

方法1:逐行替换模板变量(直观易读)

利用apply()逐行遍历DataFrame,结合字符串replace()方法替换模板中的<name>和<age>:

import pandas as pd

data = {'name' : ['Max','Jim'],'Age':[32,44],'desc':''}
df = pd.DataFrame(data)
desc_template = "My name is <name> and my age is <age>."

# 逐行替换变量
df['desc'] = df.apply(
    lambda row: desc_template.replace('<name>', row['name']).replace('<age>', str(row['Age'])),
    axis=1
)

print(df)

方法2:利用格式化字符串的关键字参数(更简洁)

将模板中的尖括号改为大括号(匹配列名),直接用行数据的字典格式传入format():

import pandas as pd

data = {'name' : ['Max','Jim'],'Age':[32,44],'desc':''}
df = pd.DataFrame(data)
# 修改模板为关键字格式,或先转换原模板
desc_template = "My name is {name} and my age is {Age}."

df['desc'] = df.apply(lambda row: desc_template.format(**row), axis=1)

print(df)

如果不想修改原模板的<name>和<age>,可以先转换模板格式:

original_template = "My name is <name> and my age is <age>."
desc_template = original_template.replace('<', '{').replace('>', '}')
df['desc'] = df.apply(lambda row: desc_template.format(**row), axis=1)

方法3:向量化字符串拼接(高效处理大数据集)

避免逐行循环,直接用Pandas的向量化字符串操作拼接内容,效率更高:

import pandas as pd

data = {'name' : ['Max','Jim'],'Age':[32,44],'desc':''}
df = pd.DataFrame(data)

df['desc'] = "My name is " + df['name'] + " and my age is " + df['Age'].astype(str) + "."

print(df)

关于正则和np.where的问题说明

  • np.where()主要用于条件分支赋值,不适合这种逐行变量替换场景,强行使用会增加复杂度。
  • 正则替换是可行的,但需要逐行处理并正确转换数据类型(比如将Age转为字符串),示例代码如下:
import re
import pandas as pd

def fill_desc(row):
    template = "My name is <name> and my age is <age>."
    template = re.sub(r'<name>', row['name'], template)
    template = re.sub(r'<age>', str(row['Age']), template)
    return template

df['desc'] = df.apply(fill_desc, axis=1)

内容的提问来源于stack exchange,提问作者Rushabh Nalawade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:35:31