Pandas 데이터 프레임에서 셀을 NaN으로 설정하는 방법
데이터 프레임 열의 잘못된 값을 NaN으로 바꾸고 싶습니다.
mydata = {'x' : [10, 50, 18, 32, 47, 20], 'y' : ['12', '11', 'N/A', '13', '15', 'N/A']}
df = pd.DataFrame(mydata)
df[df.y == 'N/A']['y'] = np.nan
하지만 마지막 줄은 실패하고 df 사본에서 작동하기 때문에 경고를 던집니다. 그렇다면 이것을 처리하는 올바른 방법은 무엇입니까? iloc 또는 ix로 많은 솔루션을 보았지만 여기서는 부울 조건을 사용해야합니다.
그냥 사용하십시오 replace
:
In [106]:
df.replace('N/A',np.NaN)
Out[106]:
x y
0 10 12
1 50 11
2 18 NaN
3 32 13
4 47 15
5 20 NaN
당신이 시도하는 것은 체인 인덱싱이라고합니다 : http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
loc
원래 dF에서 작동하는지 확인 하는 데 사용할 수 있습니다 .
In [108]:
df.loc[df['y'] == 'N/A','y'] = np.nan
df
Out[108]:
x y
0 10 12
1 50 11
2 18 NaN
3 32 13
4 47 15
5 20 NaN
사용 replace
하면 문제가 해결되는 것 같지만 대안을 제안하고 싶습니다. 문자열을 np.nan으로 대체하지 않고 전체 열을 적절하게 만드는 열에서 숫자와 일부 문자열 값의 혼합 문제. 원래 열이 개체 유형일 가능성이 가장 높습니다.
Name: y, dtype: object
정말로 필요한 것은 모든 비 숫자 값이 NaN으로 대체 된 숫자 열 (올바른 유형을 가지며 훨씬 빠름)으로 만드는 것입니다.
따라서 좋은 전환 코드는
pd.to_numeric(df['y'], errors='coerce')
errors='coerce'
숫자 값으로 구문 분석 할 수없는 문자열이 NaN이되도록 지정 합니다. 열 유형은
Name: y, dtype: float64
교체를 사용할 수 있습니다.
df['y'] = df['y'].replace({'N/A': np.nan})
에 대한 inplace
매개 변수 도 알고 있어야 합니다 replace
. 다음과 같이 할 수 있습니다.
df.replace({'N/A': np.nan}, inplace=True)
복사본을 만들지 않고 df의 모든 인스턴스를 대체합니다.
Similarly, if you run into other types of unknown values such as empty string or None value:
df['y'] = df['y'].replace({'': np.nan})
df['y'] = df['y'].replace({None: np.nan})
Reference: Pandas Latest - Replace
df.loc[df.y == 'N/A',['y']] = np.nan
This solve your problem. With the double [], you are working on a copy of the DataFrame. You have to specify exact location in one call to be able to modify it.
You can try these snippets.
In [16]:mydata = {'x' : [10, 50, 18, 32, 47, 20], 'y' : ['12', '11', 'N/A', '13', '15', 'N/A']} In [17]:df=pd.DataFrame(mydata) In [18]:df.y[df.y=="N/A"]=np.nan Out[19]:df x y 0 10 12 1 50 11 2 18 NaN 3 32 13 4 47 15 5 20 NaN
참고URL : https://stackoverflow.com/questions/34794067/how-to-set-a-cell-to-nan-in-a-pandas-dataframe
'developer tip' 카테고리의 다른 글
Facebook API 오류 191 (0) | 2020.10.17 |
---|---|
REST API-단일 요청으로 대량 생성 또는 업데이트 (0) | 2020.10.17 |
Rails Active Record find (: all, : order =>) 문제 (0) | 2020.10.17 |
CSS로 스크롤 막대 위치를 변경하는 방법은 무엇입니까? (0) | 2020.10.17 |
안드로이드 툴바 팝업 테마 대 테마 (0) | 2020.10.17 |