[PYTHON] Pandas : 필요한 경우 NaN을 생성하여 숫자로 변환
PYTHONPandas : 필요한 경우 NaN을 생성하여 숫자로 변환
일부 숫자와 일부 숫자가 아닌 데이터 프레임에 열이 있다고 가정 해 보겠습니다.
>> df['foo']
0 0.0
1 103.8
2 751.1
3 0.0
4 0.0
5 -
6 -
7 0.0
8 -
9 0.0
Name: foo, Length: 9, dtype: object
이 열을 np.float로 변환하려면 어떻게해야하고 float이 아닌 다른 모든 것은 NaN으로 변환해야합니까?
내가 시도 할 때 :
>> df['foo'].astype(np.float)
또는
>> df['foo'].apply(np.float)
ValueError : 문자열을 부동으로 변환 할 수 없습니다. -
해결법
-
==============================
1.팬더에서 0.17.0 convert_objects 경고 발생 :
팬더에서 0.17.0 convert_objects 경고 발생 :
pd.to_numeric 메서드를 사용하여 arg coerce를 사용하여 데이터 프레임에 적용 할 수 있습니다.
df1 = df.apply(pd.to_numeric, args=('coerce',))
또는보다 적절한 방법 일 수 있습니다 :
df1 = df.apply(pd.to_numeric, errors='coerce')
편집하다
이 방법은 팬더 버전이 0.17.0 이상인 경우에만 유효하지만, docs는 판다 0.17.0의 새로운 기능 :
-
==============================
2.convert_objects 시리즈 메소드 (및 convert_numeric)를 사용하십시오.
convert_objects 시리즈 메소드 (및 convert_numeric)를 사용하십시오.
In [11]: s Out[11]: 0 103.8 1 751.1 2 0.0 3 0.0 4 - 5 - 6 0.0 7 - 8 0.0 dtype: object In [12]: s.convert_objects(convert_numeric=True) Out[12]: 0 103.8 1 751.1 2 0.0 3 0.0 4 NaN 5 NaN 6 0.0 7 NaN 8 0.0 dtype: float64
참고 :이 메서드는 DataFrame 메서드로 사용할 수도 있습니다.
-
==============================
3.먼저 모든 문자열 값을 없음으로 대체하여 누락 값으로 표시 한 다음 부동 값으로 변환합니다.
먼저 모든 문자열 값을 없음으로 대체하여 누락 값으로 표시 한 다음 부동 값으로 변환합니다.
df['foo'][df['foo'] == '-'] = None df['foo'] = df['foo'].astype(float)
-
==============================
4.적용을 사용하지 않고 단순히 pd.to_numeric을 사용하고 오류를 강제 변환 할 수 있습니다.
적용을 사용하지 않고 단순히 pd.to_numeric을 사용하고 오류를 강제 변환 할 수 있습니다.
df['foo'] = pd.to_numeric(df['foo'], errors='coerce')
from https://stackoverflow.com/questions/18434208/pandas-converting-to-numeric-creating-nans-when-necessary by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 하위 프로세스 와일드 카드 사용법 (0) | 2018.10.08 |
---|---|
[PYTHON] 판다에서 datetime 형식을 변경하는 방법 (0) | 2018.10.08 |
[PYTHON] 파이썬에서 os.system ()의 반환 값은 무엇입니까? (0) | 2018.10.08 |
[PYTHON] 파이썬 명령을 사용하여 파이썬의 다른 버전의 핍을 실행하는 방법? (0) | 2018.10.08 |
[PYTHON] 파이썬 클래스 인스턴스 변수와 클래스 변수 (0) | 2018.10.08 |