如何用Python/Pandas删除Excel中不匹配指定编号的行?
解决Pandas删除Excel中不匹配指定编号行的问题
你的问题出在精确匹配的逻辑错误:原代码用df.NUMBER != '200001.'判断,但你的目标行编号是200001AAA、200001BBB这类,和'200001.'完全不相等,所以筛选逻辑完全不对。
根据你的需求,分两种场景给出解决方案:
场景1:保留所有以指定前缀开头的行(比如所有200001开头的编号)
如果只要保留编号以200001开头的行,用字符串前缀匹配最直接:
import pandas as pd # 读取Excel文件 df = pd.read_excel('your_file.xlsx') # 筛选出Number列以'200001'开头的行,直接覆盖原DataFrame即可 df = df[df['Number'].str.startswith('200001')] # 保存过滤后的结果到新Excel(index=False避免生成多余的索引列) df.to_excel('filtered_result.xlsx', index=False)
场景2:保留指定的几个精确编号行(比如仅200001AAA、200001BBB)
如果明确知道要保留的具体编号值,用isin()方法做精确匹配:
import pandas as pd df = pd.read_excel('your_file.xlsx') # 定义需要保留的编号列表 target_numbers = ['200001AAA', '200001BBB'] # 筛选出Number在目标列表中的行 df = df[df['Number'].isin(target_numbers)] # 保存结果 df.to_excel('filtered_result.xlsx', index=False)
原代码问题解析
你写的df.drop(df[df.NUMBER != '200001.'].index)是试图删除所有不等于'200001.'的行,但你的数据里没有任何一行的Number是'200001.',所以要么所有行都被删掉,要么完全没变化,这就是达不到预期的原因。
内容的提问来源于stack exchange,提问作者AskerOfQuestions5
相关产品推荐
相关产品推荐

