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

Python技术问题:无法通过apply函数根据文件列数据生成新列

解决Pandas apply调用错误及文件扩展名提取问题

原始数据

ID    File
1     this_file_whatever.ext1
2     this_whatever.ext2
3     this_is_ok_pooh.ext3

问题代码中的错误点

  • apply函数调用方式错误:原代码DF.apply(create_filegroups(row), axis=1)直接给函数传了row参数,这是错误的。apply会自动将DataFrame的每一行数据传入函数,只需传入函数名即可,不需要加括号和参数。
  • 列名不匹配:数据中的列名为File,但函数里用了row['Name'],导致无法找到对应列,触发KeyError。
  • 未处理边界情况:如果文件名中没有.,test变量未定义就执行return,会引发NameError。

修正后的代码

def create_filegroups(row):
    # 调整字典结构:用扩展名作为键,分组名作为值,方便直接映射
    filegroup_dict = {
        'ext1': 'GroupA',
        'ext2': 'GroupB',
        'ext3': 'GroupC'
    }
    # 匹配数据中的列名File
    filename = row['File']
    if '.' in filename:
        # 提取扩展名
        ext = filename.split(".", 1)[1]
        # 用get方法处理未匹配到的扩展名,返回默认值Unknown
        return filegroup_dict.get(ext, 'Unknown')
    # 处理无扩展名的文件
    return 'Unknown'

DF = build_df()
# 正确调用apply:只传入函数名
DF['COL3'] = DF.apply(create_filegroups, axis=1)
print(DF)

修正后效果

运行后会生成包含COL3列的DataFrame,其中值为对应扩展名的分组名,无扩展名或未匹配的扩展名会显示Unknown。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:25:35