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

编写函数基于字典过滤Pandas DataFrame时返回None的问题排查

问题原因及解决方法

你遇到的问题很典型——函数里没写return语句,Python函数如果没有显式返回结果,默认会返回None。

修复后的函数写法

直接给你的原逻辑加上return就行:

import pandas as pd
import numpy as np

df = pd.DataFrame({'color':['red', 'green', 'blue'], 'brand':['Ford','fiat', 'opel'], 'year':[2016,2016,2017]})
d = {'color':'red', 'year':2016}

def filter_dataframe(df, filter_dict):
    # 加上return返回过滤后的结果
    return df.loc[np.all(df[list(filter_dict)] == pd.Series(filter_dict), axis=1)]

# 调用测试
filtered_df = filter_dataframe(df, d)
print(filtered_df)

更简洁的替代写法

除了你的原逻辑,还有两种更直观的写法可以参考:

  1. 逐列构建过滤条件
def filter_dataframe(df, filter_dict):
    # 初始化全True的掩码
    mask = pd.Series([True]*len(df))
    # 遍历字典,逐步缩小过滤范围
    for col, value in filter_dict.items():
        mask &= df[col] == value
    return df[mask]
  1. 使用df.query构建查询语句
def filter_dataframe(df, filter_dict):
    # 把字典转成query支持的字符串格式
    query_str = ' & '.join([f"{col} == {repr(val)}" for col, val in filter_dict.items()])
    return df.query(query_str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:50:24