如何将GPT2模型循环预处理后的行保存至DataFrame?
解决方案
首先优化你的代码,不要在循环内重复初始化GPT2模型——每次加载模型都会消耗大量时间和内存,4000+行这么做会非常低效。先把模型初始化移到循环外:
# 仅初始化一次模型,放在循环外部 GPT2_model = TransformerSummarizer(transformer_type="GPT2", transformer_model_key="gpt2-medium")
接下来有两种高效方式将处理结果保存到DataFrame:
方法1:循环+列表收集结果
先创建空列表存储每一行的处理结果,循环结束后将列表赋值给DataFrame的新列(比如命名为summary):
summaries = [] for row in df["findings"]: full = ''.join(GPT2_model(row, min_length=60)) summaries.append(full) # 将结果写入DataFrame新列 df["summary"] = summaries
方法2:使用apply方法(更简洁)
利用Pandas的apply方法直接对findings列的每一行应用模型处理,代码更紧凑:
# 定义处理单条文本的函数 def generate_summary(text): return ''.join(GPT2_model(text, min_length=60)) # 对列应用函数生成新列 df["summary"] = df["findings"].apply(generate_summary)
如果担心某一行处理出错导致整个流程中断,可以加入异常处理:
summaries = [] for idx, row in enumerate(df["findings"]): try: full = ''.join(GPT2_model(row, min_length=60)) summaries.append(full) except Exception as e: print(f"处理第{idx}行时出错: {e}") summaries.append(None) # 出错时用None填充,后续可针对性处理 df["summary"] = summaries
处理完成后,可将整个DataFrame保存到文件避免数据丢失:
# 保存为CSV文件(也可用to_excel保存为Excel格式) df.to_csv("processed_findings.csv", index=False)
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

