Median无法正常工作

Median无法正常工作

我正在尝试在包含多列和几行的数据框中填充所有nan。我正在使用它来训练多元ML模型,因此我想用中位数填充每一列的nans。只是为了测试中位数函数,我这样做:

training_df.loc[[0]] = np.nan # Sets first row to nan
print(training_df.isnull().values.any()) # Prints true because we just inserted nans
test = training_df.fillna(training_df.median()) # Fillna with median
print(test.isnull().values.any()) # Check afterwards

但是当我这样做时,什么也没发生,最后一行的打印仍然返回True。如果我尝试更改为使用像这样的中位数函数:
training_df.fillna(training_df.median(), inplace=True)

什么也没有发生。如果我这样做:
training_df = training_df.fillna(training_df.median(), inplace=True)

Training_df变为无。我该如何解决?

最佳答案

如@thesilkworm所建议,首先将系列转换为数字。下面是一个最小的示例:

import pandas as pd, numpy as np

df = pd.DataFrame([[np.nan, np.nan, np.nan],
                   [5, 1, 2, 'hello'],
                   [1, 4, 3, 4],
                   [9, 8, 7, 6]], dtype=object)

df = df.fillna(df.median())  # fails

df[df.columns] = df[df.columns].apply(pd.to_numeric, errors='coerce')

df = df.fillna(df.median())  # works

关于python - Python Pandas Fillna Median无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49127897/

10-10 19:46