我的数据集长度是20216100
我的数据集month
和cloud_coverage
中有两列。
cloud coverage
的{{1}}值为43%。
现在,我尝试用null
的平均值null
填充cloud_coverage
的值。
month
我执行以下代码后,它将运行数小时而没有任何输出。
cloud_cov_mean=list(train.groupby('month')['cloud_coverage'].mean())
cc_dic={}
for index,val in enumerate(cloud_cov_mean):
cc_dic[index+1]=val
null_list=cc_df[cc_df['cloud_coverage'].isnull()].index.tolist()
是否可以使用上述逻辑来插补for val in null_list:
cc_month=cc_df.loc[val,'month']
imp_val=cc_dic[cc_month]
cc_df.loc[val,'cloud_coverage']=imp_val
值?
答案 0 :(得分:0)
您可以对months
的每个子集使用pandas.DataFrame.fillna
# create dictionary of 'month' as key and 'mean of month' as value
cc_dic = train.groupby('month')['cloud_coverage'].mean().to_dict()
#for mnth in train.month.unique():
for key, value in cc_dic.items():
train.loc[train.month == key,'cloud_coverage'] = train.loc[train.month == key,'cloud_coverage'].fillna(value)
或将值分配回值为na
的每个月
cc_dic = train.groupby('month')['cloud_coverage'].mean().to_dict()
for key, value in cc_dic.items():
train.loc[((train.month == key) & (train.cloud_coverage.isnull())),'cloud_coverage'] = value