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

Python for循环中调用多返回值自定义函数 如何拆分推荐课程为多列

解决方案

提供两种可直接落地的处理方法,优先推荐第一种从数据源端优化的方案,出错概率更低。

方案1:调整循环逻辑,从根源避免列合并

你的c_recommend函数返回的是长度为3的Series,直接在追加结果时展开序列即可,不需要后续额外拆分:

results = list()

## 遍历成绩单
for i in transcript.index:
    student_name = transcript['student'].loc[i]
    taken_course = transcript['Course'].loc[i]
    # 直接把推荐结果转成列表后展开,追加到当前行的元素中
    rec_courses = c_recommend(transc['Course'].loc[i]).tolist()
    results.append([student_name, taken_course, *rec_courses])

# 转成DataFrame时直接指定列名即可
res_df = pd.DataFrame(results, columns=['Student', 'Taken Class', 'Recommended Classes', 'Reco Class 2', 'Reco Class 3'])

方案2:对已生成的合并列DataFrame做拆分

如果你已经生成了推荐列合并的DataFrame,不需要重新跑推荐逻辑,用pandas内置方法即可拆分:

情况A:合并列存储的是逗号分隔的字符串

# 假设你当前的DataFrame名为df,合并的推荐列名为Recommended Classes
df[['Recommended Classes', 'Reco Class 2', 'Reco Class 3']] = df['Recommended Classes'].str.split(', ', expand=True)

情况B:合并列存储的是Series对象

# 把推荐列的每个元素转成列表,再生成新的三列DataFrame,和原表拼接
rec_df = pd.DataFrame(df['Recommended Classes'].tolist(), index=df.index, columns=['Recommended Classes', 'Reco Class 2', 'Reco Class 3'])
res_df = pd.concat([df[['Student', 'Taken Class']], rec_df], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:45:03