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

Pandas 如何在含列表的DataFrame中搜索值并返回对应类型

解决方案

1. 输出纯净结果的修改方法

你当前代码输出带索引和类型信息,是因为筛选后得到的df['type']是Series结构,直接打印会携带元信息。只需要在取type值时调用.item()方法即可拿到纯字符串结果,修改打印语句即可:

# 把原来的打印语句替换为下面的内容即可
print('You detected: ', df['type'].item())

如果存在多个匹配结果,可以用.tolist()把所有匹配类型转成列表输出。

2. 搜索方案的优化建议

你当前的实现不是最优方案:将列表列转成新DataFrame的方式,当group字段的列表长度差异较大时,会生成大量空值列,既浪费内存也影响查询效率,且可读性较差。
更简单高效的写法是直接用apply遍历判断目标值是否在列表中,代码更简洁易懂:

import pandas as pd

data = {
  "type": ['animal', 'car'],
  "group": [['cat', 'dog', 'bird'], ['chevy', 'ford', 'nissan', 'holden', 'bently']]
}
df = pd.DataFrame(data)

find = 'dog' # 搜索单值直接传字符串即可,不需要包装成列表
# 生成匹配掩码
mask = df['group'].apply(lambda x: find in x)
# 取值前加判断,避免搜索值不存在时报错
if mask.any():
    res = df.loc[mask, 'type'].item()
    print(f'You detected: {res}')
else:
    print(f'未找到与{find}匹配的类型')

这个方案不需要额外生成临时DataFrame,在列表长度差异大的场景下性能优势更明显,代码逻辑也更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:15:01