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

如何从pandas DataFrame列表类型列中提取匹配值对应的同位置数值

问题排查

你原有代码存在3个问题:

  • 关键词拼写错误:需要匹配的jkel被误写为jekl,无法匹配到目标内容
  • str.contains()方法仅适用于字符串类型的列,你的Address列存储的是列表,该方法无法正确识别列表内部元素
  • 遍历DataFrame的逻辑错误:直接for row in df遍历的是DataFrame的列名,而非每一行的数据

实现代码

步骤1:构造示例数据(测试用)

import pandas as pd

df = pd.DataFrame({
    "Address": [["abcd", "jkel", "swkg"], ["eszl", "pqks", "jkel"], ["jkel", "sqzg"]],
    "Value": [[30, 25, 87], [21, 35, 42], [11, 34]]
})

步骤2:数据处理(两种可选写法)

写法1:遍历处理,逻辑易懂
target = "jkel"
result_list = []
for addr_list, val_list in zip(df["Address"], df["Value"]):
    if target in addr_list:
        idx = addr_list.index(target)
        result_list.append({"Address": target, "Value": val_list[idx]})

result_df = pd.DataFrame(result_list)
写法2:pandas apply 简洁写法
target = "jkel"
# 筛选包含目标值的行
df = df[df["Address"].apply(lambda x: target in x)]
# 提取对应位置的Value值
df["Value"] = df.apply(lambda row: row["Value"][row["Address"].index(target)], axis=1)
# 替换Address列为固定目标值
df["Address"] = target
# 重置索引得到最终结果
result_df = df.reset_index(drop=True)

输出结果

运行以上代码得到的result_df即为你需要的格式:

AddressValue
jkel25
jkel42
jkel11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:07