如何将Pandas数据框经纬度列的指定异常值替换为pd.NA
你之前写法失效的核心原因是pandas.DataFrame.replace()的第一个参数要求传入需要匹配的值本身,而你传入的是布尔类型的Series,无法匹配到数据中实际存储的0.0和-2e-08数值,因此不会触发替换操作。
正确替换方案
方案1:用loc按掩码赋值(最推荐,和你之前定位的1812行完全匹配)
# 复用你之前定位异常行的掩码,确保只替换你找到的1812行 abnormal_mask = (df3['latitude'] < 0.01) & (df3['longitude'] < 0.01) df3.loc[abnormal_mask, ['longitude', 'latitude']] = pd.NA # 验证替换结果 print(df3['longitude'].value_counts(dropna=False), '\n') print(df3['latitude'].value_counts(dropna=False))
方案2:正确使用replace方法
如果你想用replace实现,需要传入列-值的映射字典:
df3.replace( { 'longitude': {0.0: pd.NA}, 'latitude': {-2e-08: pd.NA} }, inplace=True )
注意事项
如果你的数据集里存在正常的、小于0.01的经纬度值,不要直接用<0.01的条件全量替换,避免误改正常数据,优先用精确匹配异常值或者你之前验证过的组合掩码筛选。
内容的提问来源于stack exchange,提问作者MarkS
相关产品推荐
相关产品推荐

