2016-10-28 5 views
5

나는 데이터 집합 일부 다음과 같습니다 누락 된 데이터 것 같습니다팬더 : null 값을 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입니다. 두 번째 값이있는 AB 같은 범주의 경우 null을 해당 범주의 평균으로 바꿉니다. 그리고 한 번만 나타나는 범주 C의 경우 나머지 데이터의 평균을 채우기 만하면됩니다.

모든 행의 평균을 얻으려면 C과 같은 경우이 작업을 간단하게 수행 할 수 있습니다. 그러나 A와 B에 대한 범주 별 평균을 수행하고 null을 대체하려고 노력하고 있습니다.

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

나는 mean

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
난 당신이 groupby를 사용할 수 있다고 생각

applyfillna처럼되고 최종 수비수가 필요합니다. 그런 다음 몇 가지 카테고리 만 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

관련 문제