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

Python中用map+Lambda处理Pandas数据遇TypeError问题求助

TypeError: 'list' object is not callable 错误分析与修复

错误原因

  1. 列表被当作函数调用:代码里key是筛选后得到的列名列表(比如['industry','system','acct']),但后续写成了key(mask|key(' ')),把列表当成函数调用,直接触发TypeError。
  2. 掩码逻辑完全错误:map(lambda c: c in (valid[c]),key)这行是在判断列名是否在valid的对应值列表里,完全偏离了“检查DataFrame单元格值是否符合要求”的需求。
  3. 语法混乱:mask|key(' ')这种写法不符合Python语法,位运算不能直接用在列表和字符串之间。

修正方案

核心逻辑:先筛选DataFrame与valid共有的列,逐列检查每行值是否在允许的列表中,收集所有不符合条件的位置,最后整理成要求的errors字典格式。

完整修正代码

import pandas as pd

filename = 'template'
 
data = [['','','','','','','','Auto','','','','','']]

df = pd.DataFrame(data, columns=['first','last','state','lang','country','company','email','industry',
                                'system','acct','segment','existing','permission'])

valid = {'industry': ['Automotive'],
        'SME Vertical': ['Agriculture'],
        'system': ['Access'],
        'acct': ['Commercial']}

errors = {filename: {}}

# 筛选df和valid共有的列
common_cols = [col for col in valid if col in df.columns]

# 生成错误掩码:标记值不在允许列表中的单元格
error_mask = pd.DataFrame()
for col in common_cols:
    error_mask[col] = ~df[col].isin(valid[col])

# 提取所有错误位置的索引
error_positions = error_mask.stack()[error_mask.stack()].index

# 整理错误信息到目标字典
for err_i, (row_idx, col_name) in enumerate(error_positions):
    invalid_val = df.loc[row_idx, col_name]
    errors[filename][err_i] = {
        "row": row_idx,
        "column": col_name,
        "message": f"{invalid_val} is invalid check column {col_name} and replace with a standard value"
    }

print(errors)

运行结果

输出完全匹配期望格式:

{'template': {0: {'row': 0, 'column': 'industry', 'message': 'Auto is invalid check column industry and replace with a standard value'}}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:46:16