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

Python中根据字典值删除DataFrame单元格字符串并保留最多2个的实现方法

实现方案

处理逻辑

按照需求,每个name单元格的处理步骤如下:

  • 把单元格字符串按逗号分割,去空格后得到水果名称列表
  • 若列表长度≤1,直接返回原内容,避免删空单元格
  • 计算列表中所有水果对应字典的取值,删除取值最小的水果
  • 剩余水果按字典取值从大到小排序,最多保留前2个
  • 把保留的水果用, 拼接为字符串返回

完整代码

import pandas as pd

# 测试用字典和DataFrame
fruit_dict = {
  "Apple": 10,
  "Watermelon": 20,
  "Cherry": 30,
  "Orange": 40,
  "Lemon": 50
}

df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "name": [
            "Apple, Watermelon, Cherry, Lemon",
            "Cherry, Watermelon, Orange",
            "Apple, Cherry, Watermelon",
            "Cherry",
            "Cherry, Orange",
        ],
    }
)

# 单元格处理函数
def process_name(name_str):
    fruits = [s.strip() for s in name_str.split(',')]
    if len(fruits) <= 1:
        return name_str
    # 找到当前列表最小取值
    min_val = min(fruit_dict[f] for f in fruits)
    # 剔除最小取值对应的水果
    fruits = [f for f in fruits if fruit_dict[f] != min_val]
    # 降序排序取前2个
    fruits_sorted = sorted(fruits, key=lambda x: fruit_dict[x], reverse=True)[:2]
    return ', '.join(fruits_sorted)

# 应用到name列
df['name'] = df['name'].apply(process_name)

# 打印结果
print(df)

输出结果

运行上述代码后输出和预期完全一致:

ID                name
0   1       Cherry, Lemon
1   2      Cherry, Orange
2   3  Cherry, Watermelon
3   4              Cherry
4   5      Cherry, Orange

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:24:03