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

如何基于任意列值从Pandas DataFrame匹配并提取对应记录

解决思路与代码实现

嘿,这问题很明确,我来给你提供一个简洁的实现方案,既能找到目标值所在的列,又能返回对应的完整记录:

首先,我们先创建题目里的示例DataFrame,并定义目标变量:

import pandas as pd

# 构建示例DataFrame
data = {
    'First_name': ['David', 'Fredrick', 'Donald', 'Cathy'],
    'Last_name': ['Gilbert', 'Manuel', 'Trump', 'Jackso'],
    'Policy_number': ['IOTA123455', 'IOTA367522', 'IOTA337823', 'IOTA892352']
}
df = pd.DataFrame(data)

# 目标查找值
some_value = "Trump"

接下来是核心逻辑:我们需要先定位到包含目标值的行,同时找出它所在的列:

# 1. 找出包含目标值的所有行
matching_rows = df[df.isin([some_value]).any(axis=1)]

# 2. 找出目标值所在的列
matching_columns = df.columns[df.isin([some_value]).any()]

# 输出结果
print(f"目标值 '{some_value}' 所在的列:{list(matching_columns)}")
print("\n对应的完整记录:")
print(matching_rows)

代码解释

  • df.isin([some_value]):生成一个布尔类型的DataFrame,每个单元格标记为True如果它等于目标值,否则为False。
  • .any(axis=1):按行检查,只要该行有一个True就返回True,帮我们筛选出包含目标值的行。
  • df.columns[df.isin([some_value]).any()]:按列检查,找出存在目标值的列名。

当some_value = "Trump"时,运行结果会是:

目标值 'Trump' 所在的列:['Last_name']

对应的完整记录:
  First_name Last_name Policy_number
2     Donald      Trump    IOTA337823

这个方案也适用于目标值在其他列的情况,比如把some_value改成"IOTA892352",会自动定位到Policy_number列,并返回Cathy的那条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:24:19