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

Pandas DataFrame拼接字符串与元素输出异常问题求解

错误原因

你的代码存在4个核心问题,导致无法得到预期结果:

  • 迭代逻辑错误:直接对dframe做for循环时,Python默认遍历的是DataFrame的列名(也就是会依次拿到'A'、'B'两个值),根本不会逐行读取数据
  • 列索引错误:dframe[0]、dframe[1]的写法是取列名为0、1的列,你的DataFrame列名是'A'和'B',不存在对应列,运行时会直接抛出KeyError
  • f-string语法错误:f-string中只有需要替换的变量/表达式需要包裹在{}里,你把固定文本也包进了{},还加了不必要的转义引号,会触发语法解析报错
  • 格式问题:就算前面的逻辑都对,你写的拼接逻辑没有在文本和变量之间加空格,输出的内容会出现文字和值粘连的情况
修正代码

写法1:逐行迭代(适合小数据量,逻辑直观)

用iterrows()方法实现逐行遍历,直接通过列名取每行对应的值即可:

import pandas as pd
dframe = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['Guitar', 'Piccolo', 'Sax']
})

for _, row in dframe.iterrows():
    print(f"Mary's favorite number is {row['A']} and her favorite instrument is {row['B']}")

写法2:向量化拼接(适合大数据量,执行效率更高)

利用Pandas的向量化操作先批量拼接好所有输出字符串,再循环打印,性能比逐行迭代好很多:

import pandas as pd
dframe = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['Guitar', 'Piccolo', 'Sax']
})

outputs = "Mary's favorite number is " + dframe['A'].astype(str) + " and her favorite instrument is " + dframe['B']
for line in outputs:
    print(line)
运行效果

上述两种写法运行后,都会输出你预期的结果:

Mary's favorite number is 1 and her favorite instrument is Guitar
Mary's favorite number is 2 and her favorite instrument is Piccolo
Mary's favorite number is 3 and her favorite instrument is Sax

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:39:42