如何将OpenAI循环生成的响应存入DataFrame新列并导出Excel?
解决OpenAI响应存入DataFrame并导出Excel的问题
你之前的代码能正确打印响应,但没把结果收集起来存入DataFrame,之前得到None大概率是因为存储方式错误(比如直接在循环里覆盖列值,或者没正确将结果存入可迭代对象)。以下是修正后的完整方案:
步骤说明
- 先创建一个空列表,用来逐个存储每个问题对应的响应结果
- 遍历
Question列时,把处理后的响应字符串添加到列表中 - 循环结束后,将整个列表赋值给DataFrame的新列
- 最后导出到Excel文件
修正后的代码
import pandas as pd import openai # 假设你的df已经正确加载完成 responses = [] # 初始化空列表存储所有响应 for question in df['Question']: response = openai.Completion.create( model="text-davinci-003", prompt="Write a detailed, lengthy, and authoratative response to the question: {}".format(question), temperature=0.7, max_tokens=20, top_p=1, frequency_penalty=0, presence_penalty=0 ) # 提取并清理响应文本,添加到列表 cleaned_response = response['choices'][0]['text'].strip() responses.append(cleaned_response) print(cleaned_response) # 将响应列表赋值给DataFrame新列 df['Response'] = responses # 导出到Excel(需要安装openpyxl依赖:pip install openpyxl) df.to_excel('question_responses.xlsx', index=False)
关键注意点
- 用列表收集结果比在循环中直接修改DataFrame更高效,也能避免出现值覆盖、NaN等异常问题
- 导出Excel时,
index=False会去掉默认的行索引,让输出文件更整洁 - 如果导出过程报错,确保已经安装了
openpyxl库(这是pandas处理.xlsx格式的依赖包)
内容的提问来源于stack exchange,提问作者Fox
相关产品推荐
相关产品推荐

