UPDATE :
대신 1, 2 또는 3의 보간 즉 후 원래의 형태로 다시 데이터를 변환하는 방법이 있나요 당신, 구름 바람과 비가 다시 있나요?
솔루션 : 내가 의도적으로 원래 DF에 더 많은 행을 추가했습니다 :
In [129]: df
Out[129]:
col1 col2
0 5 cloudy
1 3 windy
2 6 NaN
3 7 rainy
4 10 NaN
5 5 cloudy
6 10 NaN
7 7 rainy
In [130]: df.dtypes
Out[130]:
col1 int64
col2 category
dtype: object
In [131]: df.col2 = (df.col2.cat.codes.replace(-1, np.nan)
...: .interpolate().astype(int).astype('category')
...: .cat.rename_categories(df.col2.cat.categories))
...:
In [132]: df
Out[132]:
col1 col2
0 5 cloudy
1 3 windy
2 6 rainy
3 7 rainy
4 10 cloudy
5 5 cloudy
6 10 cloudy
7 7 rainy
OLD "수치"대답 :
:
IIUC 당신은이 작업을 수행 할 수 있습니다
In [66]: df
Out[66]:
col1 col2
0 5 cloudy
1 3 windy
2 6 NaN
3 7 rainy
4 10 NaN
첫 번째로는,290,293,210 :
In [67]: df.col2 = pd.factorize(df.col2, na_sentinel=-2)[0] + 1
In [68]: df
Out[68]:
col1 col2
0 5 1
1 3 2
2 6 -1
3 7 3
4 10 -1
이제 그것을 보간 수 (S '의 NaN
으로 S'-1
교체)
In [69]: df.col2.replace(-1, np.nan).interpolate().astype(int)
Out[69]:
0 1
1 2
2 2
3 3
4 3
Name: col2, dtype: int32
동일한 방식이지만 category
DTYPE 보간하여 직렬 변환 :
In [70]: df.col2.replace(-1, np.nan).interpolate().astype(int).astype('category')
Out[70]:
0 1
1 2
2 2
3 3
4 3
Name: col2, dtype: category
Categories (3, int64): [1, 2, 3]
완벽하게 작동합니다. 보간법을 사용하여 데이터를 다시 원래의 형태로 변환하는 방법이 있습니까? 예를 들어, 1,2,3 대신에'흐림','바람 ','우천'을 다시 할 수 있습니까? –
@WasswaSamuel, 내 대답을 업데이트했습니다. - – MaxU
을 확인하십시오.이 대답을 통해 많은 사람들이 배울 수있는 놀라운 점이 있습니다. 오늘 집 인수 분해()와 보간() :) – Vaishali