2016-10-28 14 views
5

私はこのようになりますいくつかの欠落したデータになるデータセットがあります。パンダ:GROUPBYの平均でnull値を埋めるためにどのように?

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になります。私がやりたいの方法は、複数の値がそのカテゴリの平均でNULLを置き換える必要があり、カテゴリABような場合のためです。そして、ただ一つの発生とカテゴリCのためだけのデータの残りの平均値で埋めます。

私はすべての行の平均を得るためにCのようなケースでこれを単純に行うことができますが、私はAとBのカテゴリワイズの手段を実行してnullを置き換えようとしています。

df['value'] = df['value'].fillna(df['value'].mean()) 

私は私はあなたがmeangroupbyapplyfillnaを使用することができると思う。この

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 

答えて

5

ようになり、最終的なDFを必要としています。その後、いくつかのカテゴリのみNaN値を持っている場合NaNを取得し、そのNaNを埋めるために、列のすべての値のmeanを使用します。

df.value = df.groupby('category')['value'].apply(lambda x: x.fillna(x.mean())) 
df.value = df.value.fillna(df.value.mean()) 
print (df) 
    id category value 
0 1  A 6.25 
1 2  B 1.00 
2 3  A 10.50 
3 4  C 4.15 
4 5  A 2.00 
5 6  B 1.00 
+0

素晴らしいです!これが私の必要なものです。ありがとう! – sfactor

+0

私はあなたの仕事が好きです、これはクールです – Axis

関連する問題