문자열과 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])
답변
최신 버전의 pandas (0.17 이상)에서는 to_numeric 함수를 사용할 수 있습니다 . 전체 데이터 프레임 또는 개별 열만 변환 할 수 있습니다. 또한 숫자 값으로 변환 할 수없는 항목을 처리하는 방법을 선택할 수있는 기능도 제공합니다.
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')
답변
float로 변환하기 전에 빈 문자열 ( ”)을 np.nan으로 바꿔야합니다. 즉 :
df['a']=df.a.replace('',np.nan).astype(float)
답변
다음은 예입니다.
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
그러나 이것이 모든 문자열 값이라면 … 내 경우와 같이 … 원하는 열을 부동 소수점으로 변환하십시오.
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)
이제 데이터 프레임에 부동 값이 있습니다. 🙂