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

如何基于字典键值保留Pandas DataFrame列中对应值最大的字符串

Pandas基于字典映射保留列中值最大字符串的实现方法

核心逻辑是将name列每个单元格的字符串按分隔符拆分为单个元素,再基于给定字典的映射值取最大元素即可,以下是两种不同场景的高效写法:

常规数据量场景(推荐,简洁易读)

十万行以内数据用该写法完全够用,代码维护成本低:

import pandas as pd

fruit_dict = {
  "Apple": 10,
  "Watermelon": 20,
  "Cherry": 30
}

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

# 核心处理代码
df["name"] = df["name"].str.split(", ").apply(lambda x: max(x, key=fruit_dict.get))

运行后得到的df就是预期输出结果。

超大数据量场景(性能优化)

如果是百万行及以上的大表,可以用向量化操作替换apply降低开销:

# 拆分name列并展开为多行
df = df.assign(name=df["name"].str.split(", ")).explode("name")
# 映射得到每个水果的分值
df["score"] = df["name"].map(fruit_dict)
# 按分值倒排后取每个ID的第一条记录,就是分值最高的水果
df = df.sort_values("score", ascending=False).drop_duplicates("ID").drop(columns="score").sort_values("ID")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:12:04