从其他列替换数据集的数字列

Replace Numeric Columns of dataset from other columns

我有一个包含很多列的数据集,我想提取数字列并替换为列的平均值,然后将这些修改后的列替换原始数据框中的列。

df1 = df.select_dtypes(include = ["number"]).apply(lambda x: x.fillna(x.mean()),axis=0)
df.loc[df.select_dtypes(include = ["number"])] = df1

我设法提取了数字列,但我无法替换它们,我的想法是不要手动指示哪些是那些数字列。

assign new/changed DataFrame 可能更容易。这只会更改您更改的列。

new_df = df.assign(**df.select_dtypes('number').apply(lambda x: x.fillna(x.mean())))                                                                                                                               

如果想保留原来的DataFrame,可以按以下步骤进行:

cols = df.select_dtypes('number').columns                                                                                                                                                  
df[cols] = df[cols].apply(lambda x: x.fillna(x.mean()))