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

如何对Pandas DataFrame的指定行子集应用新增列的自定义函数

问题原因

你原来的写法仅会匹配原DataFrame已有的列进行赋值,函数新增的列不在原表的列列表中,对应内容会被直接丢弃,所以看不到更新效果。

解决方案

你可以先拿到处理后的子表,自动识别新增的列后再写入原表,不需要手动指定新增的列名,适配任意数量的新增列场景:

import pandas

def arbitrary_function_that_adds_columns(df):
    # 先拷贝避免修改传入的原数据,减少副作用
    df = df.copy()
    df['new column'] = df['A'] + df['B'] / 8 + df['A']**3
    return df

df = pandas.DataFrame({'A': [1,2,3,4], 'B': [2,3,4,5]})

# 此处加~是为了匹配你给出的期望输出,若要给A为1、3的行赋值去掉~即可
rows = ~df['A'].isin({1,3})
# 处理目标行的子表
processed_subdf = arbitrary_function_that_adds_columns(df.loc[rows])

# 自动识别所有新增列,写入原表
for new_col in processed_subdf.columns.difference(df.columns):
    df[new_col] = pandas.NA
    df.loc[rows, new_col] = processed_subdf[new_col]

print(df)

运行后输出和你期望的结果完全一致:

A  B  new column
0  1  2        <NA>
1  2  3      10.375
2  3  4        <NA>
3  4  5      68.625
逻辑说明
  • 先通过columns.difference对比处理后的子表和原表的列差,自动找出所有新增的列
  • 先给原表初始化这些新增列,默认填充空值
  • 再把处理后的结果赋值给目标行的对应列,不管函数新增多少列都可以通用适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:06:00