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

如何在Pandas中对单列值应用函数后拆分结果填充多列?

解决Pandas中对单列应用函数并拆分列表到多列的问题

正确实现方法

你需要先对Column A应用目标函数,将返回的列表拆分为多列,再直接赋值给原DataFrame的对应列。以下是两种高效的实现方式:

方法1:使用apply(pd.Series)直接赋值

import pandas as pd

# 定义你的自定义函数(替换为实际业务逻辑)
def func(s):
    # 返回固定长度的列表,示例逻辑仅作演示
    return [f"func({s})[0]", f"func({s})[1]"]

# 将函数结果拆分后直接覆盖目标列
df[["Column B", "Column C"]] = df["Column A"].apply(func).apply(pd.Series)

方法2:使用pd.DataFrame.from_records(大数据量更高效)

如果数据集规模较大,推荐用这种方法,性能优于apply(pd.Series):

df[["Column B", "Column C"]] = pd.DataFrame.from_records(df["Column A"].apply(func))

错误原因分析

你之前的代码逻辑存在问题:

df.iloc[:,1:].apply(lambda y: df["Column A"].apply(lambda x: list(map(func, x)))

这段代码是对Column B和Column C分别执行赋值,每一列都被整体赋值为Column A所有元素的函数结果列表,导致每列的每个单元格都是完整列表,而非拆分后的单个元素。

完整示例验证

# 创建测试DataFrame
df = pd.DataFrame({
    "Column A": ["String1", "String2"],
    "Column B": [None, None],
    "Column C": [None, None]
})

# 应用函数并赋值
df[["Column B", "Column C"]] = df["Column A"].apply(func).apply(pd.Series)

# 输出结果
print(df)

输出结果符合预期:

Column A         Column B         Column C
0  String1  func(String1)[0]  func(String1)[1]
1  String2  func(String2)[0]  func(String2)[1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:07:28