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

使用Pandas筛选同目录下.xlsx文件时过滤失效该如何解决?

代码存在的问题
  • 逻辑错位:你在for循环中仅对当前遍历的单个文件名做了.xlsx后缀判断,但判断成立后执行的是df_file["Filename"].str.split(' '),是对整个DataFrame的所有文件名做拆分,没有针对筛选出的xlsx文件操作。只要遍历到任意一个xlsx文件,就会输出全量文件的拆分结果,完全没实现过滤效果。
  • 判断逻辑存在隐患:用".xlsx" in files的判断方式,会把文件名中间包含.xlsx的非xlsx文件误判,比如test.xlsx备份.doc这类文件会被错误筛选,建议用str.endswith('.xlsx')做后缀判断更严谨。
  • 逻辑冗余:你用循环逐一遍历文件名,但实际拆分操作调用的是pandas Series的向量化方法,不需要套循环,写法逻辑冲突。
修复方案

基于原有pandas写法的最小改动

直接用pandas布尔索引筛选符合要求的文件,再做拆分,不需要额外写循环:

import os
import pandas as pd

path = os.getcwd()
files = os.listdir(path)
df_file = pd.DataFrame(files, columns=['Filename'])
# 先筛选后缀为xlsx的行,再对文件名做拆分,最后转为列表
t1_list = df_file[df_file['Filename'].str.endswith('.xlsx')]['Filename'].str.split(' ').tolist()
print(t1_list)

更简洁的原生Python实现(不需要依赖pandas)

如果不需要用DataFrame存储文件名,直接用原生逻辑实现即可:

import os

t1_list = []
for filename in os.listdir(os.getcwd()):
    if filename.endswith('.xlsx'):
        t1_list.append(filename.split(' '))
print(t1_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:05