首页 > 解决方案 > 如何在python中用NaN替换空系列值

问题描述

我正在迭代多个列并将它们的汇总统计信息(如平均值、中值、偏度和峰度)存储在字典中,如下所示:

metrics_dict['skewness'] = data_col.skew().values[0]
metrics_dict['kurtosis'] = data_col.kurt().values[0]
metrics_dict['mean'] = np.mean(data_col)[0]
metrics_dict['median'] = np.median(data_col)

但是对于某些列,它会给出如下错误:

IndexError: index out of bounds

有问题的列如下:

Index          device
61021           C:2
61022          D:3+
61023          D:3+
61024           B:1
61025          D:3+
61026           C:2 

我只是想在这样的列的情况下将 NA 附加到 dict 并且不会让错误中断我的循环。这里 index 只是数据帧的索引,操作的列是设备。请注意,数据有大量的数字列(~500),其中 2 -3 列就像设备一样,因此我只需将 NA 添加到这些列的字典中,然后转到下一列。有人可以告诉我如何在 python 中做到这一点吗?

标签: pythonpandasdataframeseriesis-empty

解决方案


由于这些统计信息仅对数字列有意义,因此您可以尝试隔离数字列。这可以使用pd.DataFrame.select_dtypes

numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']

numeric_cols = df.select_dtypes(include=numerics).columns

for col in df:
    if col in numeric_cols:
        # calculate & add some values to dictionary
    else:
        # add NA values to dictionary

推荐阅读