在VSCode中用Python过滤空白值并替换为-1,保留N/A
解决数据空白值替换问题(保留"N/A",替换空白为-1)
步骤1:先明确空白的类型
先查看列中所有唯一值,确认空白是NaN、空字符串还是其他形式:
print(df['Condition Overall'].unique())
步骤2:精准替换空白值
场景A:空白是空字符串"","N/A"为字符串类型
直接用replace替换空字符串:
df['Condition Overall'] = df['Condition Overall'].replace("", -1)
场景B:空白是NaN(空字符串被解析成了NaN),且"N/A"是字符串类型
用fillna只替换NaN值,不影响"N/A":
df['Condition Overall'] = df['Condition Overall'].fillna(-1)
避免踩坑:读取数据时就区分空白和"N/A"
如果是从文件读取数据,建议读取时就指定只有空字符串被识别为缺失值,防止"N/A"被误解析成NaN:
import pandas as pd df = pd.read_csv('your_data.csv', na_values=['']) # 仅将空字符串设为NaN,"N/A"保留为字符串
为什么之前的方法无效?
你把列转为字符串时,astype(str)会把NaN直接转成字符串"nan",导致后续无法区分原本的空白和转出来的"nan",反而混乱了数据。所以不要随意将包含NaN的列转为字符串,先处理缺失值识别再替换。
内容的提问来源于stack exchange,提问作者Datum
相关产品推荐
相关产品推荐

