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

Python中使用函数过滤Pandas数据后导出Excel为空的问题

解决Pandas过滤后导出Excel为空的问题

你的代码导出Excel为空,核心原因是过滤条件没有匹配到任何数据,具体问题点和修正方案如下:

问题排查

1. 大小写不匹配

传入的参数'vermelho'是小写,但DataFrame中FarolAging列的值是"Vermelho"(首字母大写),isin方法是大小写敏感的,导致这一条件无法匹配。

2. 日期条件不匹配

传入的'Até 20 dias'和DataFrame中Dias Pendentes列的"20 dias"完全不一致,没有匹配项。

3. 空字符串过滤逻辑错误

传入的prod是空字符串'',代码中df['Produto'].isin([''])会去匹配值为空的行,但你的DataFrame里Produto列都是Prod1/Prod2,没有空值,这直接导致条件不满足。

4. 列名拼写错误

函数中引用的df['Coordenador'],但你创建的DataFrame列名是Coord,列名不匹配会导致条件失效(甚至可能报错)。

修正后的代码

import pandas as pd
import numpy as np

# 修正列名,保持和函数中引用的一致
df = pd.DataFrame(np.array([["Vermelho","Verde","Amarelo"],
                            ["20 dias","40 dias","60 dias"],
                            ["Prod1","Prod1","Prod2"],
                            ["Alexandre Denardi","Alexandre Denardi","Lucas Fernandes"],
                            ["Guilherme De Oliveira Moura","Leonardo Silva","Julio Cesar"],
                            ["Anna Claudia","Bruno","Bruno"]]), 
                  columns=["FarolAging","Dias Pendentes","Produto","Officer","Analista","Coordenador"])

def update_output(farol,dias,prod,officer,anal,coord):
    # 初始化条件为全True,空参数时不限制对应列
    cond = pd.Series([True]*len(df), index=df.index)
    
    # 仅当参数非空时,添加对应过滤条件
    if farol:
        # 转小写实现大小写不敏感匹配
        cond &= df['FarolAging'].str.lower() == farol.lower()
    if dias:
        cond &= df['Dias Pendentes'] == dias
    if prod:
        cond &= df['Produto'] == prod
    if officer:
        cond &= df['Officer'] == officer
    if anal:
        cond &= df['Analista'] == anal
    if coord:
        cond &= df['Coordenador'] == coord
    
    df_f = df.loc[cond]
    df_f.to_excel('C:\\Users\\brechtl\\Downloads\\File.xlsx', index=False)
    # 打印过滤结果行数,方便调试
    print(f"过滤后共{len(df_f)}行数据")

# 调整日期参数为匹配值,空参数保持不变
update_output('vermelho', '20 dias','','Alexandre Denardi','Guilherme De Oliveira Moura','Anna Claudia')

关键修正说明

  • 统一列名:将DataFrame的Coord改为Coordenador,确保和函数中的引用一致。
  • 大小写不敏感匹配:通过str.lower()消除大小写差异,避免因大小写导致的匹配失败。
  • 优化空参数逻辑:当参数为空时,不对该列做过滤,符合“不限制该条件”的实际需求,而不是去匹配空值。
  • 修正日期参数:将'Até 20 dias'改为DataFrame中存在的'20 dias',如果实际业务中日期是Até 20 dias,则需要同步修改DataFrame中的对应值。

内容的提问来源于stack exchange,提问作者Lucas Brecht Fernandes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:30:42