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

Pandas基于多列表替换空格匹配列名后按行求和的实现方法

问题修正说明

原有代码存在3处核心错误:

  • 变量未定义:persons没有提前声明,直接放入yup会触发名称错误
  • 循环逻辑冗余:xup存储要生成的新列名,yup存储对应每个新列的匹配关键词列表,二者是一一对应关系,不需要嵌套遍历
  • 求和逻辑错误:原代码的列表推导式遍历了整个yup,而非当前组的匹配列表,同时没有过滤DataFrame中不存在的列,会导致匹配失败报错
修正后可运行代码
import pandas as pd
fruits = ['apple pie', 'watermelon pie', 'banana pie']
places = ['Hong Kong', 'Boston', 'New York']

df = pd.DataFrame({
    'apple_pie': [3, 4, 5],
    'watermelon_pie': [3, 4, 5],
    'New_York': [6, 7, 8]
})

# 若需要保留persons可提前定义为空列表,此处直接移除未定义变量
xup = ['fruits', 'places']
yup = [fruits, places]

# 同步遍历新列名和对应的匹配规则列表
for new_col, match_list in zip(xup, yup):
    # 替换空格后筛选当前列表中在df里真实存在的列
    target_cols = [item.replace(" ", "_") for item in match_list]
    exist_cols = [col for col in target_cols if col in df.columns]
    # 按行求和生成新列
    df[new_col] = df[exist_cols].sum(axis=1)
运行结果
apple_pie  watermelon_pie  New_York  fruits  places
0          3               3         6       6       6
1          4               4         7       8       7
2          5               5         8      10       8

和预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:57:03