programing

문자열을 데이터 프레임에서 부동으로 변환

goodsources 2023. 7. 20. 21:53
반응형

문자열을 데이터 프레임에서 부동으로 변환

문자열을 포함하는 데이터 프레임 열을 숨기는 방법NaN값을 변동시킵니다.문자열과 부동 소수점 값을 가진 다른 열이 있습니다. 이 열 전체를 부동 소수점으로 변환하는 방법입니다.

참고: 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])

최신 버전의 판다(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으로 대체해야 합니다.i:

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)

이제 데이터 프레임에 부동값이 설정됩니다. :-)

import pandas as pd
df['a'] = pd.to_numeric(df['a'])

언급URL : https://stackoverflow.com/questions/16729483/converting-strings-to-floats-in-a-dataframe

반응형