【发布时间】:2020-08-29 06:02:33
【问题描述】:
workclass = X_train[~X_train['workclass'].isnull()]['workclass'].unique()
for dataset in [X_train, X_test]:
df = dataset[dataset['workclass'].isnull()].index
size = len(df)
s = pd.Series([workclass[np.random.randint(0, 8)] for _ in range(size)], index=df, dtype=object)
dataset.loc[:, 'workclass'] = dataset.loc[:, 'workclass'].fillna(s)
输出
S:\AnacondaPF\lib\site-packages\pandas\core\indexing.py:965: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
最后一行是给我SettingWithCopyWarning,即使我使用.loc 方法。
即使它发出警告,它也已填充了两个数据集中的所有缺失值。
谁能解释一下为什么?
【问题讨论】:
-
如果将
dataset.loc[:, 'workclass'] = dataset.loc[:, 'workclass'].fillna(s)更改为dataset['workclass'] = dataset['workclass'].fillna(s)会有什么效果? -
dataset['workclass'] = dataset['workclass'].fillna(s)? -
它仍然给我同样的警告
-
@Anonymous 它与
s是什么有关。 -
@DavidErickson 如你所见
s是一个普通系列
标签: pandas data-analysis missing-data