2017-12-20 12 views

답변

0

설정

df 

    Group Value 
0  1  10 
1  1 #NA### 
2  3  5 
3  2  10 
4  2 #NA### 
5  3 #NA### 
6  1  40 
7  2 #NA### 
8  3  100 
9  1  20 

pd.to_numeric을 호출하여 해당 문자열을 NaN으로 변환합니다.

mean와 6,
df.Value = pd.to_numeric(df.Value, errors='coerce') 
이제

, Group에 의해 그룹 및 전화 fillna - 나는 꽤 좋은 줄 알았는데

df = df.set_index('Group').Value\ 
     .fillna(df.groupby('Group').mean().Value)\ 
     .reset_index() 
df 

    Group  Value 
0  1 10.000000 
1  1 23.333333 
2  3 5.000000 
3  2 10.000000 
4  2 10.000000 
5  3 52.500000 
6  1 40.000000 
7  2 10.000000 
8  3 100.000000 
9  1 20.000000 

(A 지금 삭제 대답에서) 또 다른 충전 방법은 groupby + transform을 포함한다 -

df.Value = df.Value.fillna(df.groupby('Group')['Value'].transform('mean')) 
df 

     Group  Value 
    0  1 10.000000 
    1  1 23.333333 
    2  3 5.000000 
    3  2 10.000000 
    4  2 10.000000 
    5  3 52.500000 
    6  1 40.000000 
    7  2 10.000000 
    8  3 100.000000 
    9  1 20.000000