DataFrame에서 문자열을 부동 소수점으로 변환
문자열과 NaN
값을 포함하는 DataFrame 열 을 부동으로 변환하는 방법. 그리고 값이 문자열과 부동 소수점 인 또 다른 열이 있습니다. 이 전체 열을 float로 변환하는 방법.
참고 :
pd.convert_objects
이제 더 이상 사용되지 않습니다.pd.Series.astype(float)
또는pd.to_numeric
다른 답변에 설명 된대로 사용해야 합니다.
이것은 0.11에서 사용할 수 있습니다. 강제 변환 (또는 nan으로 설정) 이것은 astype
실패 할 때도 작동합니다. 또한 시리즈별로 시리즈이므로 완전한 문자열 열을 변환하지 않습니다.
In [10]: df = DataFrame(dict(A = Series(['1.0','1']), B = Series(['1.0','foo'])))
In [11]: df
Out[11]:
A B
0 1.0 1.0
1 1 foo
In [12]: df.dtypes
Out[12]:
A object
B object
dtype: object
In [13]: df.convert_objects(convert_numeric=True)
Out[13]:
A B
0 1 1
1 1 NaN
In [14]: df.convert_objects(convert_numeric=True).dtypes
Out[14]:
A float64
B float64
dtype: object
시도해 볼 수 있습니다 df.column_name = df.column_name.astype(float)
. 에 관해서 NaN
값, 당신은 그들이 변환 할 방법을 지정해야하지만 당신은 사용할 수 있습니다 .fillna
그것을 할 방법을.
예:
In [12]: df
Out[12]:
a b
0 0.1 0.2
1 NaN 0.3
2 0.4 0.5
In [13]: df.a.values
Out[13]: array(['0.1', nan, '0.4'], dtype=object)
In [14]: df.a = df.a.astype(float).fillna(0.0)
In [15]: df
Out[15]:
a b
0 0.1 0.2
1 0.0 0.3
2 0.4 0.5
In [16]: df.a.values
Out[16]: array([ 0.1, 0. , 0.4])
In a newer version of pandas (0.17 and up), you can use to_numeric function. It allows you to convert the whole dataframe or just individual columns. It also gives you an ability to select how to treat stuff that can't be converted to numeric values:
import pandas as pd
s = pd.Series(['1.0', '2', -3])
pd.to_numeric(s)
s = pd.Series(['apple', '1.0', '2', -3])
pd.to_numeric(s, errors='ignore')
pd.to_numeric(s, errors='coerce')
df['MyColumnName'] = df['MyColumnName'].astype('float64')
you have to replace empty strings ('') with np.nan before converting to float. ie:
df['a']=df.a.replace('',np.nan).astype(float)
Here is an example
GHI Temp Power Day_Type
2016-03-15 06:00:00 -7.99999952505459e-7 18.3 0 NaN
2016-03-15 06:01:00 -7.99999952505459e-7 18.2 0 NaN
2016-03-15 06:02:00 -7.99999952505459e-7 18.3 0 NaN
2016-03-15 06:03:00 -7.99999952505459e-7 18.3 0 NaN
2016-03-15 06:04:00 -7.99999952505459e-7 18.3 0 NaN
but if this is all string values...as was in my case... Convert the desired columns to floats:
df_inv_29['GHI'] = df_inv_29.GHI.astype(float)
df_inv_29['Temp'] = df_inv_29.Temp.astype(float)
df_inv_29['Power'] = df_inv_29.Power.astype(float)
Your dataframe will now have float values :-)
참고URL : https://stackoverflow.com/questions/16729483/converting-strings-to-floats-in-a-dataframe
'programing' 카테고리의 다른 글
Spinner의 드롭 다운에 다른 테마를 설정하려면 어떻게해야합니까? (0) | 2020.08.16 |
---|---|
.gitignore 파일, xcode 프로젝트에서 어디에 넣어야합니까? (0) | 2020.08.16 |
현재 실행중인 tmux 버전을 어떻게 알 수 있습니까? (0) | 2020.08.16 |
PropertyInfo를 사용하여 속성 유형 찾기 (0) | 2020.08.16 |
추상 메서드없이 추상 클래스 정의 (0) | 2020.08.16 |