Python实现数据集A全元素在数据集B跨列匹配查询求助
问题修正方案
你的代码未实现核心需求(遍历A的所有列元素),且存在未定义变量、逻辑错误等问题,以下是符合需求的完整实现:
问题诊断
row_to_search变量未定义,运行会触发NameError- 仅处理了用户输入的单个值,未遍历A的每一列及每个元素
- 错误地将用户输入值与A的某行第一列绑定,偏离原始需求
完整代码实现
import pandas as pd # 加载数据集 table_a = pd.read_csv("https://raw.githubusercontent.com/Holuwakenny/file/main/players_15.csv") table_b = pd.read_csv("https://raw.githubusercontent.com/Holuwakenny/file/main/fifa18_clean.csv") # 遍历数据集A的每一列 for col_a_name in table_a.columns: # 遍历当前列的每个元素(跳过空值避免无效检索) for _, element in table_a[col_a_name].items(): if pd.isna(element): continue target = str(element) matched_cols_b = [] # 遍历数据集B的所有列查找匹配 for col_b_name in table_b.columns: # 统一转为字符串匹配,避免类型不匹配问题 if target in table_b[col_b_name].astype(str).values: matched_cols_b.append(col_b_name) # 按指定格式输出结果 if matched_cols_b: print(f"Value {target} from column {col_a_name} found in columns {', '.join(matched_cols_b)}")
核心改进说明
- 完整遍历A的所有列与元素,严格匹配需求
- 加入空值处理,避免空值引发的检索异常
- 统一字符串转换,解决数字、字符串等不同类型的匹配冲突
- 完全按照你给出的示例格式输出结果
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

