如何基于任意列值从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
相关产品推荐
相关产品推荐

