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

如何使用apply结合自定义函数为DataFrame新增多行数据?

实现方案

pandas.DataFrame.apply本身不支持直接返回多行完成行扩展,不需要刻意修改foo函数适配apply的返回逻辑,使用pandas原生的列表展开接口即可高效实现需求,操作步骤如下:

  • 首先补全原有foo函数的返回语句,让它正常返回计算得到的answers列表即可,无需额外改造:
def foo(row):
  if row['col1']==0:
    answers = ['zero']
  elif row['col1']==1:
    answers = ['one', 'i']
  elif row['col1']==2:
    answers = ['two', 'ii']
  else:
    answers = ['three', 'iii']
  return answers
  • 执行两行核心代码完成列新增和行展开:
# 先通过apply生成存储列表的col4列
input_df['col4'] = input_df.apply(foo, axis=1)
# 按col4的列表元素拆分为多行,重置索引后和期望输出格式完全匹配
result_df = input_df.explode('col4', ignore_index=True)

不推荐强行让apply返回多行:这种实现需要让每行apply返回一个子DataFrame,最后再做全表拼接,代码冗余且运行效率远低于原生explode接口。explode是pandas专门为「列内存储可迭代对象、需要按元素拆分为独立行」的场景设计的API,最终输出的表结构、取值和你给出的期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:12:30