如何删除DataFrame指定列含负值的行?代码语法报错求助
问题分析与解决办法
你的代码存在两个核心问题:
- 语法错误:代码里的
df.drop(没有闭合右括号,Python解析到代码结尾都没找到匹配的括号,所以抛出SyntaxError: unexpected EOF while parsing。 - 逻辑错误:
drop方法的columns参数是用来删除列的,不是删除行;而且['column_name'] < int(0)这种写法完全错误——列表和整数无法直接比较,这根本不是筛选负值行的正确逻辑。
正确删除指定列含负值行的几种写法:
方法1:布尔索引筛选(最直观常用)
直接保留指定列值非负的行:
df = df[df['column_name'] >= 0]
方法2:用drop指定要删除的行索引
先定位所有含负值的行索引,再删除:
# 获取需要删除的行的索引 bad_rows = df[df['column_name'] < 0].index # 删除这些行 df = df.drop(index=bad_rows)
方法3:用query方法(写法简洁)
df = df.query('column_name >= 0')
内容的提问来源于stack exchange,提问作者Jorge Queiroz
相关产品推荐
相关产品推荐

