[英]Pandas: How to fill null values with mean of a groupby?
我有一個數據集將丟失一些看起來像這樣的數據:
id category value
1 A NaN
2 B NaN
3 A 10.5
4 C NaN
5 A 2.0
6 B 1.0
我需要填寫空值來使用模型中的數據。 每次類別第一次出現時,它都是NULL。 我想要做的是對於像A
類和B
類這樣具有多個值的情況,用該類別的平均值替換空值。 對於只有單次出現的C
類,只需填寫其余數據的平均值即可。
我知道我可以簡單地為C
這樣的情況做到這一點來獲得所有行的平均值,但是我不得不嘗試為A和B做類別方法並替換空值。
df['value'] = df['value'].fillna(df['value'].mean())
我需要最終的df是這樣的
id category value
1 A 6.25
2 B 1.0
3 A 10.5
4 C 4.15
5 A 2.0
6 B 1.0
您還可以使用GroupBy
+ transform
以分組方式填充NaN
值。 這種方法避免了低效的apply
+ lambda
。 例如:
df['value'] = df['value'].fillna(df.groupby('category')['value'].transform('mean'))
df['value'] = df['value'].fillna(df['value'].mean())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.