2017-03-21 68 views
2

我使用Python進行編碼。 Dataframe full_df具有以下特性: building_id log_price。我想calcute log_price通過分組的平均building_id和新功能 mean_log_price full_df根據其 building_id創建,存儲的 log_price的平均值。Python數據框 - 計算組和商店的平均值

我有以下代碼:

full_df['mean_log_price'] = full_df.groupby(['building_id'],as_index=False).agg(np.mean)['log_price'] 

然而,當我看着 full_df,一些值 mean_log_price爲NaN和一些值不正確我做了一些檢查後。爲什麼會發生這種情況,還有哪些替代方法?提前致謝。

+0

是否有獨特的少'building_id's比行?那麼'mean_log_price'的列長將比'full_df'的列長短。 – Charlie

回答

2

agg將改變結果的長度並破壞索引,所以通過將更小的對象分配給更大的數據框,您不會得到正確的結果。在這裏,你需要transform,這使該系列的長度和索引,因此它可以被分配到數據幀:

full_df['mean_log_price'] = full_df.groupby('building_id')['log_price'].transform('mean') 
+0

良好的編輯。 Updoot – Charlie

+0

@CharlieG謝謝。欣賞它。 – Psidom

+0

謝謝!它解決了這個問題。 –