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

如何在Pandas中为含指定字符串的列批量创建新列?

解决Pandas批量创建带后缀新列的问题

我来帮你搞定这个Pandas的操作问题~先看看你原来代码的问题,再一步步给出通用的解法。

你的代码问题分析

你原来的代码有两个关键问题:

  • 判断条件错误:if 'aa' in df.columns 是检查整个列名集合里有没有叫'aa'的列,而不是当前遍历的列名是否包含'aa',应该改成if 'aa' in col
  • 缺少赋值操作:df[col+'_new']只是尝试访问这个列,如果列不存在会抛出KeyError,而且没有给它赋值的话,根本不会创建新列

通用解法步骤

1. 从大型DataFrame提取含特定字符串的列

首先用filter(like='xxx')方法可以快速提取包含指定字符串的列,这个方法非常通用,换任何目标字符串都能用:

import pandas as pd

# 假设large_df是你的大型DataFrame
# 提取所有列名包含'aa'的列,生成小型DataFrame
small_df = large_df.filter(like='aa')

2. 批量创建带后缀的新列

这里提供两种通用方法,你可以根据习惯选择:

方法一:循环遍历列(直观易懂)

# 定义你需要的后缀,比如'_goal'或'_new'
target_suffix = '_new'

# 遍历小型DataFrame的每一列
for col in small_df.columns:
    # 创建带后缀的新列,初始值设为pd.NA(或NaN),方便后续导入数据
    small_df[col + target_suffix] = pd.NA

方法二:用assign批量创建(更简洁的Pandas风格)

target_suffix = '_new'

# 生成新列名和初始值的字典
new_columns = {col + target_suffix: pd.NA for col in small_df.columns}
# 批量添加新列到小型DataFrame
small_df = small_df.assign(**new_columns)

3. 从其他DataFrame导入值到新列

假设你有另一个other_df需要导入数据,这里分两种常见情况:

  • 如果other_df的列数和新列数相同,且顺序对应:
# 获取所有带目标后缀的列名
new_col_names = [col for col in small_df.columns if col.endswith(target_suffix)]
# 直接赋值
small_df[new_col_names] = other_df.values
  • 如果other_df的列名和新列名完全匹配:
# 用update方法直接更新对应列的值
small_df.update(other_df)

这样整个流程就通用了,不管你的小型DataFrame有多少列,换不同的目标字符串或后缀都能直接套用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:12:21