Python DataFrame删除行问题:无唯一索引时移除指定行
解决办法
你这里的误区是把School列的值当成了DataFrame的索引,实际上你的DataFrame用的是默认的0-4数字索引。要删除Helen所在的行,有几种简单可行的方法:
方法1:直接筛选保留非Helen的行
这是最直观的方式,直接过滤掉Name列等于'Helen'的行:
# 直接更新原DataFrame df = df[df['Name'] != 'Helen'] # 或者创建新DataFrame,保留原数据不变 new_df = df[df['Name'] != 'Helen']
方法2:定位Helen的索引后删除
先找到Helen所在行的索引,再用drop方法删除:
# 获取Helen所在的索引(如果有多个重名的Helen,会返回所有匹配的索引) helen_index = df[df['Name'] == 'Helen'].index # 删除对应索引的行,inplace=True表示直接修改原DataFrame df.drop(helen_index, inplace=True)
方法3:使用query方法筛选
用query语法写出筛选条件,代码更简洁:
df = df.query("Name != 'Helen'")
如果需要精准删除特定的Helen行(比如同时满足Class为Biology的),可以添加多条件过滤:
# 筛选保留符合条件的行 df = df[(df['Name'] != 'Helen') | (df['Class'] != 'Biology')] # 或者定位索引后删除 target_index = df[(df['Name'] == 'Helen') & (df['Class'] == 'Biology')].index df.drop(target_index, inplace=True)
内容的提问来源于stack exchange,提问作者Carol L
相关产品推荐
相关产品推荐

