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

如何在Pandas中为DataFrame逐行生成独立的msg列?

解决Pandas DataFrame逐行生成个性化消息的问题

你的问题出在直接用f-string拼接整个Pandas Series(比如df.Name),这会把整列的所有值都塞进同一个字符串里,而不是逐行提取对应的值。下面是两种可行的解决方法:

方法一:使用apply逐行处理

先提前计算好日期范围(避免重复计算提升效率),再通过apply遍历每一行生成消息:

import datetime
import pandas as pd

# 模拟数据
data = {
    'Name': ['Jane', 'Celi'],
    'A': [1, 4],
    'B': [2, 5],
    'C': [3, 9]
}
df = pd.DataFrame(data)

# 计算日期区间
start_date = datetime.date.today() - datetime.timedelta(days=7)
end_date = datetime.date.today()

# 逐行生成消息
df['msg'] = df.apply(
    lambda row: f'''Hi {row.Name} you have {row.A} for A and {row.B} for B, making {row.C} in total for {start_date} and {end_date}. ''',
    axis=1
)

这里axis=1指定按行处理,lambda函数里的row代表每一行的数据,可以直接通过row.列名获取对应行的数值。

方法二:使用str.format结合列映射

如果你偏好更简洁的写法,也可以用字符串的format方法,直接映射DataFrame的列:

df['msg'] = 'Hi {Name} you have {A} for A and {B} for B, making {C} in total for {start} and {end}. '.format(
    start=start_date, end=end_date, **df.to_dict('series')
)

这种方法通过**df.to_dict('series')把列名和对应Series传入format,实现逐行替换。

执行后,df['msg']列会生成每行匹配自身数据的个性化消息:

  • Jane对应的消息:Hi Jane you have 1 for A and 2 for B, making 3 in total for [起始日期] and [今日日期].
  • Celi对应的消息:Hi Celi you have 4 for A and 5 for B, making 9 in total for [起始日期] and [今日日期].

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:31:17