Pandas中无法删除指定行的问题求助(标题列为索引)
解决Pandas DataFrame删除指定行的问题
我看你已经把title列设为DataFrame的索引了,这也是之前你尝试的几种方法没生效或者报错的核心原因,咱们一步步来解决:
先分析你之前方法的问题:
- 方法1:
movies.drop(i)没生效,是因为Pandas的drop()默认返回一个新的DataFrame,不会修改原数据。要么把结果重新赋值给movies,要么加上inplace=True参数。 - 方法2:
movies.drop(0)报错,因为你已经把title设为索引了,行索引不再是默认的数字0,自然找不到这个索引。 - 方法3:
movies.drop(movies.iloc[0])报错,是因为你把整行的Series传给了drop(),它会把Series里的数值(3.4444、9.0)当作索引去查找,当然找不到,所以抛出KeyError。 - 方法4、5:
movies.drop(' ',axis=0)报错,可能是那一行的空白标题不是单个空格,而是空字符串或者其他空白形式,所以匹配不到。
两种可行的解决方案:
方案一:根据行的内容条件删除
既然你明确知道目标行的rating=3.4444且rat_count=9,可以精准定位后删除:
# 找到符合条件的行的索引 target_rows = movies[(movies['rating'] == 3.4444) & (movies['rat_count'] == 9)].index # 删除行并覆盖原DataFrame(或者加inplace=True直接修改) movies = movies.drop(target_rows) # 或者用inplace=True,不需要重新赋值 # movies.drop(target_rows, inplace=True)
方案二:直接删除第一行
如果确定要删的就是第一行,不管内容,可以通过iloc获取第一行的索引(也就是它的title值)再删除:
# 获取第一行的索引(即title列的值),然后删除该行 movies = movies.drop(movies.iloc[0].name)
这样就能顺利删除你目标的那一行啦~
内容的提问来源于stack exchange,提问作者user18292031
相关产品推荐
相关产品推荐

