如何同步移除两个Pandas Series中的NaN与Inf值?
问题描述
我有两组Pandas Series数据actuals和predictions,数据示例如下:
409 -9938.1580 410 -9938.1580 411 -9938.1580 412 -9938.1580 413 -9938.1580 414 -9938.1580 415 NaN 416 -9703.9345 Name: actuals, dtype: float64 <class 'pandas.core.series.Series'> 409 NaN 410 -9938.1580 411 -9938.1580 412 -9944.1580 413 -9938.1580 414 -9000.1580 415 -1000.0000 416 -9903.9345 Name: predictions, dtype: float64 <class 'pandas.core.series.Series'>
当使用sklearn的mean_squared_error计算指标时:
import sklearn.metrics mean_squared_error(actuals, predictions)
触发错误:
ValueError: Input contains NaN.
已知错误由NaN或Inf值导致,需要自动同步移除两个Series中存在NaN/Inf的条目及对应关联行,处理后的数据如下:
410 -9938.1580 411 -9938.1580 412 -9938.1580 413 -9938.1580 414 -9938.1580 416 -9703.9345 Name: actuals, dtype: float64 <class 'pandas.core.series.Series'> 410 -9938.1580 411 -9938.1580 412 -9944.1580 413 -9938.1580 414 -9000.1580 416 -9903.9345 Name: predictions, dtype: float64 <class 'pandas.core.series.Series'>
解决方法
方法1:合并为DataFrame批量清理
将两个Series合并成DataFrame,利用dropna()一键移除包含NaN/Inf的行,再拆分回原Series:
import pandas as pd # 合并为DataFrame df = pd.DataFrame({'actuals': actuals, 'predictions': predictions}) # 移除任意一列存在NaN/Inf的行 df_clean = df.dropna(how='any') # 拆分回清理后的Series actuals_clean = df_clean['actuals'] predictions_clean = df_clean['predictions']
方法2:基于索引精准筛选
先找出两个Series中同时有效的索引(无NaN/Inf),再用索引过滤原数据:
# 筛选两个Series中既非NaN也非Inf的索引 valid_idx = actuals.notna() & predictions.notna() valid_idx = valid_idx & ~actuals.isin([float('inf'), float('-inf')]) & ~predictions.isin([float('inf'), float('-inf')]) # 提取清理后的Series actuals_clean = actuals[valid_idx] predictions_clean = predictions[valid_idx]
方法3:针对指标计算的快速处理
如果仅为了计算sklearn指标,可先将数据转换为数组并过滤异常值(注意此方法会丢失索引):
from sklearn.utils.validation import check_array # 过滤NaN/Inf并转换为数组 actuals_arr = check_array(actuals, allow_nan=False, force_all_finite=True) predictions_arr = check_array(predictions, allow_nan=False, force_all_finite=True) # 直接用清理后的数组计算指标 sklearn.metrics.mean_squared_error(actuals_arr, predictions_arr)
内容的提问来源于stack exchange,提问作者PV8
相关产品推荐
相关产品推荐

