You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas删除数据集中包含'-'值的对应行

错误原因分析

  • 首先你写的df.2009不符合Python语法规则:Python不允许标识符以数字开头,所以对于数字开头的列名,不能用点属性的方式访问,必须改用df['2009']这种方括号加字符串列名的写法。
  • 其次你当前的写法只判断了2009列是否有'-',如果你的需求是删除任意列存在'-'的行,只判断单列是不够的。

正确实现代码

场景1:仅需删除2009列值为'-'的行

import pandas as pd
df = pd.read_csv('modified_data.csv')
df = df.dropna() # 移除包含NA的行
df = df[df['2009'] != '-'] # 改用方括号访问数字开头的列
print(df)

场景2:需要删除所有列中存在任意一个'-'的行(更符合你的数据情况)

import pandas as pd
df = pd.read_csv('modified_data.csv')
df = df.dropna()
# 逐行检查是否有'-',仅保留完全没有'-'的行
df = df[~df.isin(['-']).any(axis=1)]
print(df)

代码说明

df.isin(['-'])会把数据中所有等于'-'的位置标记为布尔值True,.any(axis=1)会逐行判断是否存在至少一个True(即该行有'-'),最前面的~是取反操作,最终筛选出完全没有'-'的行。

优化小技巧:你也可以在读入CSV的时候就把'-'直接识别为空值,后续只需要一次dropna()就能同时删除原NA和'-'对应的行,写法更简洁:

df = pd.read_csv('modified_data.csv', na_values=['-'])
df = df.dropna()

内容的提问来源于stack exchange,提问作者Mathhurtsmybrain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:48:03