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

如何在Python DataFrame中基于三列编写多条件数据查询函数

基于ID、框架类型和材质查询DataFrame的函数实现

核心实现代码(Pandas)

假设你的DataFrame列名为ID、Frame Type、Frame material,可以编写以下函数完成多条件精准查询:

import pandas as pd

def query_frame_details(df, target_id, frame_type, frame_material):
    # 多条件逻辑与筛选,严格匹配列名和参数值
    matched_rows = df[(df['ID'] == target_id) & 
                      (df['Frame Type'] == frame_type) & 
                      (df['Frame material'] == frame_material)]
    return matched_rows

调用示例

# 模拟测试用的DataFrame
sample_df = pd.DataFrame({
    'ID': ['1c', '2a', '3b'],
    'Frame Type': ['fixed', 'adjustable', 'fixed'],
    'Frame material': ['aluminum', 'wood', 'wood'],
    'Weight': ['1.2kg', '2.1kg', '1.8kg']  # 示例额外数据列
})

# 执行查询
result = query_frame_details(sample_df, target_id='1c', frame_type='fixed', frame_material='aluminum')

# 处理查询结果
if not result.empty:
    # 获取唯一匹配的单行数据(确保条件组合唯一时使用)
    single_record = result.iloc[0]
    print(f"匹配记录详情: {single_record.to_dict()}")
else:
    print("未找到符合条件的记录")

扩展优化方案

  1. 大小写不敏感查询:如果需要忽略参数与数据的大小写差异,可统一转换为小写处理:
def query_frame_details_case_insensitive(df, target_id, frame_type, frame_material):
    matched_rows = df[(df['ID'].str.lower() == target_id.lower()) & 
                      (df['Frame Type'].str.lower() == frame_type.lower()) & 
                      (df['Frame material'].str.lower() == frame_material.lower())]
    return matched_rows
  1. 直接返回单行字典:若确定三个条件组合唯一,可直接返回字典格式的单行数据,简化后续处理:
def get_single_frame_record(df, target_id, frame_type, frame_material):
    matched_rows = df[(df['ID'] == target_id) & 
                      (df['Frame Type'] == frame_type) & 
                      (df['Frame material'] == frame_material)]
    return matched_rows.to_dict('records')[0] if not matched_rows.empty else None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:10:27