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

如何用列表推导式根据DataFrame另一列对应值过滤列?

问题分析与解决

你的代码逻辑存在两个核心问题,导致输出空列表:

1. 行关联错误

你循环遍历的是df["A"]的每个元素,但判断条件word in df["B"]是在检查整个B列Series是否包含word,而不是当前A元素对应行的B列值。这种情况下,除非word恰好是B列中某一个完整的元素值(而且逻辑上和当前A元素无关),否则条件永远不成立。

2. 变量未明确定义

代码中直接使用了word变量,但你没有指定具体要匹配的目标子串(比如你期望输出[1],应该是要匹配B列第一个元素里的"a_b_c")。


正确写法

方式一:列表推导式(配对遍历A和B列)

通过zip同时遍历A和B的对应元素,确保判断条件和当前行绑定:

import pandas as pd

df = pd.DataFrame({
    "A" : [1,2,3],
    "B" : ["a_b_c_some_word", "de_f_some_word", "g_hi_some_word"]
})

# 指定你要匹配的目标子串
target_word = "a_b_c"
lst = [a for a, b in zip(df["A"], df["B"]) if target_word in b]
print(lst)  # 输出: [1]

方式二:更贴合Pandas风格的写法

利用Pandas的字符串方法直接过滤行,再提取A列转成列表:

lst = df[df["B"].str.contains("a_b_c")]["A"].tolist()
print(lst)  # 输出: [1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:04:55