如何使用Python Pandas DataFrame删除包含‘-’的所有行?
解决CSV含‘-’行的过滤问题
你的代码无效有两个核心原因:
- 过滤操作没有重新赋值给原DataFrame,只是临时生成了过滤后的结果,原df根本没被修改;
- 只检查了
Data1列,没处理Data2列里的‘-’,导致仍然会保留Data2含‘-’的行。
以下是两种可行的解决方法:
方法一:多列条件过滤
直接指定所有列都不能等于‘-’,并将结果赋值给df:
import pandas as pd df = pd.read_csv("data.csv") # 同时过滤Data1和Data2都不含'-'的行 df = df[(df['Data1'] != '-') & (df['Data2'] != '-')] print(df)
方法二:将‘-’转为缺失值后删除(更通用)
如果你的数据有很多列,逐个列写条件太麻烦,可以先把所有‘-’替换成pandas识别的缺失值NaN,再一次性删除所有含缺失值的行:
import pandas as pd df = pd.read_csv("data.csv") # 将'-'替换为NaN df = df.replace('-', pd.NA) # 删除所有含缺失值的行 df = df.dropna() print(df)
两种方法都能得到你期望的结果:
Data1 Data2 0 99 1 1 99 2 3 98 4 4 97 5
内容的提问来源于stack exchange,提问作者user9964422
相关产品推荐
相关产品推荐

