使用Python删除CSV指定行遇问题:pandas drop方法未生效
解决pandas删除CSV行无效的问题
你遇到的问题核心是**drop方法的使用逻辑**:pandas的drop默认不会修改原DataFrame,而是返回一个删除行后的新对象。你既没把这个新对象赋值给变量,也没开启原地修改,所以原df完全没变化,输出自然和删除前一致。
给你三种可行的解决方式:
方式一:开启原地修改(inplace=True)
直接在drop里加inplace=True参数,让操作直接作用于原DataFrame:
import pandas as pd df = pd.read_csv(r'C:\Users\Downloads\Iowa 2010 Census Data Population Income.csv') # 原地删除索引9和20的行 df.drop([9, 20], inplace=True) print(df)
方式二:重新赋值给原变量
把drop返回的新DataFrame赋值给原变量df,覆盖原来的数据:
import pandas as pd df = pd.read_csv(r'C:\Users\Downloads\Iowa 2010 Census Data Population Income.csv') # 用删除后的新数据替换原df df = df.drop([9, 20]) print(df)
方式三:按内容匹配删除(更稳妥)
如果你的目标是删除“美国行”和“爱荷华州行”,直接根据County列的内容匹配删除更可靠,避免CSV行顺序变化导致索引9、20对应的行不是你要删的:
import pandas as pd df = pd.read_csv(r'C:\Users\Downloads\Iowa 2010 Census Data Population Income.csv') # 过滤掉County列是"United States"或"Iowa"的行 df = df[~df['County'].isin(['United States', 'Iowa'])] print(df)
内容的提问来源于stack exchange,提问作者skeekcat
相关产品推荐
相关产品推荐

