-1
"#NA ####"이 포함 된 데이터 프레임이 있습니다.이 값을 그룹을 의미한다.Python bfill 메서드를 사용하여 사용자 정의 값 (예 : "#NA ####")을 채우는 방법
을 내가 먼저 pd.fillna를 사용 np.NAN와 "#NA을 ####"대체 할 수 있습니다 알고 있지만, 더 편리한 방법이있다?
"#NA ####"이 포함 된 데이터 프레임이 있습니다.이 값을 그룹을 의미한다.Python bfill 메서드를 사용하여 사용자 정의 값 (예 : "#NA ####")을 채우는 방법
을 내가 먼저 pd.fillna를 사용 np.NAN와 "#NA을 ####"대체 할 수 있습니다 알고 있지만, 더 편리한 방법이있다?
설정
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
아니요, 편리한 방법입니다. 그렇게해야 할 것입니다. –