如何在python中用NaN替换空序列值

时间:2018-06-26 09:29:47

标签: python pandas dataframe series is-empty

我要遍历许多列,并将其摘要统计信息(例如均值,中位数,偏度和峰度)存储在以下字典中:

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附加到字典上,并且不会让错误中断我的循环。这里的index只是数据帧的索引,操作中的列是device。请注意,数据中有大量的数字列(〜500),其中2 -3列就像设备,因此我只需要为这些字典添加NA并移至下一列。 有人可以告诉我如何使用python吗?

3 个答案:

答案 0 :(得分:1)

由于这些统计信息仅对数字列有意义,因此您可以尝试隔离数字列。可以使用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

答案 1 :(得分:0)

您可以尝试使用try / except IndexError

try:
   # whatever you do that might rise an IndexError
except IndexError:
   # append NA to dict

答案 2 :(得分:-1)

从数据框中选择要将空值设置为nan的列。

df[df['col'] == ''] = np.nan

希望这会有所帮助。