【发布时间】:2018-08-14 03:18:03
【问题描述】:
我正在尝试在包含多列和多行的数据框中填充所有 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 变为无。我该如何解决这个问题?
【问题讨论】:
-
我要做的第一件事是使用
training_df.info()检查training_df的数据类型。如果您有任何未存储为数字类型的列,则可能会发生您所描述的行为。 -
另外,当您使用
inplace=True时,不要将结果分配给变量,因为它始终是None。这就是为什么你的最后一行将整个变量设置为None。
标签: python python-3.x python-2.7 pandas dataframe