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

如何在pandas DataFrame的列表类型单元格中查找指定值对应的行

解决方案

你可以直接使用pandas原生语法实现需求,无需额外封装类,两种核心需求的实现方式如下:

1. 查询指定PLZ对应的行或Place字段

直接通过apply判断目标值是否在PLZ列表中,筛选对应行即可:

# 目标查询PLZ
target_plz = 8405
# 筛选包含该PLZ的整行数据
matched_rows = df[df["PLZ"].apply(lambda plz_list: target_plz in plz_list)]
# 仅提取对应的Place字段
matched_places = matched_rows["Place"].tolist()

2. 汇总所有PLZ为一个总列表

通过explode展开PLZ列的列表结构后去重,即可得到全量PLZ列表:

# 去重后的全量PLZ列表
all_plz = df["PLZ"].explode().unique().tolist()

高频查询优化方案

如果你需要频繁查询不同PLZ对应的Place,提前构建映射字典可以将每次查询的时间复杂度降到O(1),同时也能直接拿到全量PLZ列表:

# 提前构建PLZ到Place的映射字典
plz_place_map = {}
for _, row in df.iterrows():
    for plz_val in row["PLZ"]:
        plz_place_map[plz_val] = row["Place"]

# 直接查询
print(plz_place_map.get(8405)) # 输出 Winterthur
# 直接获取全量PLZ列表
all_plz = list(plz_place_map.keys())

小提示:你当前使用的df.append()方法在pandas 2.0及以上版本已被弃用,推荐改用pd.concat()实现新增行操作,示例:df = pd.concat([df, pd.DataFrame([new_row1])], ignore_index=True)


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 12:15:04