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

从CSV数据集列中删除指定姓名后重构数据集的实现问题

问题分析与解决方案

你的代码存在几个关键问题,导致无法正确更新数据集:

  • 循环中仅修改了局部变量company_ranks,但从未将修改后的名单写回原数据集,原始数据根本没发生变化。
  • 最后一行的np.transpose(company_ranks)完全无效:它只处理最后一列的名单,对一维列表转置没有任何意义,也没把结果赋值给任何变量。
  • 函数没有返回值,调用后拿不到修改后的数据集。

修正后的代码(分两种场景)

场景1:数据集是Pandas DataFrame,每列对应公司的排名(每行是单个求职者姓名,空值用NaN填充)

import pandas as pd

def delete_names(student_name, dataset):
    # 复制原数据集,避免直接修改输入数据
    updated_dataset = dataset.copy()
    for col in updated_dataset.columns:
        # 过滤掉目标姓名,同时排除空值(NaN)
        filtered_ranks = [name for name in updated_dataset[col].tolist() 
                          if pd.notna(name) and name != student_name]
        # 重新赋值列,用NaN填充空缺位置以保持数据集结构一致
        updated_dataset[col] = pd.Series(filtered_ranks)
    return updated_dataset

场景2:数据集的单元格存储完整排名列表(每列的每个单元格是一个姓名列表)

def delete_names(student_name, dataset):
    updated_dataset = dataset.copy()
    for col in updated_dataset.columns:
        for idx in updated_dataset.index:
            rank_list = updated_dataset.at[idx, col]
            # 确保是列表类型再操作,避免报错
            if isinstance(rank_list, list) and student_name in rank_list:
                rank_list.remove(student_name)
                updated_dataset.at[idx, col] = rank_list
    return updated_dataset

使用说明

调用函数时需要接收返回的修改后数据集:

# 假设original_dataset是你的原始数据集
new_dataset = delete_names("要删除的姓名", original_dataset)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:51:00