![](/img/trans.png)
[英]Pandas : How to get mean of the column from the filtered values of other column?
[英]Imputing null values in column using the mean of other column values in pandas
我的數據集的長度是 20216100
我的數據集month
和cloud_coverage
有兩列。
cloud coverage
有 43% 的null
值。
現在我嘗試用平均cloud_coverage
填充month
null
值。
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
有沒有其他方法可以使用上述邏輯來估算null
值?
你可以使用pandas.DataFrame.fillna ,給每個子集months
# 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.