簡體   English   中英

使用熊貓中其他列值的平均值在列中輸入空值

[英]Imputing null values in column using the mean of other column values in pandas

我的數據集的長度是 20216100

我的數據集monthcloud_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM