데이터 유형은 변경하십시오 열 마리의

난 로렌아줌마가 변환하십시오 목록을 표로 표시된 열거합니다 다테프라임 를 판다. 표시됨과 매우 간단한 예:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)

지정하십시오. 변환하십시오 열 수 있는 최선의 방법은 해당 유형, 이 경우 열 2 와 3 를 유동합니다? 유형을 지정할 수 있는 방법이 변환할 때 다테프라임? 또는 더 우수합니까 다테프라임 만들려면 먼저 그리곤요 루프 유형을 변경하십시오 열을 통해 각 열? 이 작업을 수행할 수 있기 때문에 이상적인 싶다 동적 길을 열 쉐퍼드도 don& 수백 t # 39, 정확히 어떤 열은 지정할 재배케하여 유형:. 내가 같은 유형의 모든 값이 들어 각 열 수 있을지 장담할 수 있다는 것입니다.

해결책

유형 3 마리의 변환하기 위한 기본 옵션이 있습니다.

  1. ['infer_objects ()'] (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.infer_objects.html) - 열 수 있는 방법은 가능한 경우 보유 중인 파이썬 객체에는 유틸리티에는 변환할지 객체에는 입력하십시ᄃ오 판다. 읽기 및 사용에 대한 자세한 설명은 각 방법은.
  • 1 ' ()' to_numeric.

    가장 좋은 방법은 단 하나 이상의 숫자 값은 변환하십시오 다테프라임 사용할 수 있는 ['pandas.to_numeric ()'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_numeric.html). 이 기능은 변경하시려면 시도하시겠습니까 비사양 숫자 객체에는 정수 또는 부동 소수점 숫자 (문자열 등) 를 적절히.

    기본 사용법

    이 ' () 의' 은 하나의 열에 대한 입력입니다 to_numeric 시리즈이거나 다테프라임.

>>> s = pd.Series(["8", 6, "7.5", 3, "0.9"]) # mixed string and numeric values
>>> s
0      8
1      6
2    7.5
3      3
4    0.9
dtype: object

>>> pd.to_numeric(s) # convert everything to float values
0    8.0
1    6.0
2    7.5
3    3.0
4    0.9
dtype: float64

알 수 있듯이, 새로운 시리즈가 반환됨. 출력 변수 또는 계속 사용하기 위해 열 이름을 붙인 것을 잊지 마십시오.

# convert Series
my_series = pd.to_numeric(my_series)

# convert column "a" of a DataFrame
df["a"] = pd.to_numeric(df["a"])

또한 여러 열 수 있습니다 () '를 통해' 의 변환하십시오 다테프라임 적용하십시오 방법:

# convert all columns of DataFrame
df = df.apply(pd.to_numeric) # convert all columns of DataFrame

# convert just columns "a" and "b"
df[["a", "b"]] = df[["a", "b"]].apply(pd.to_numeric)

네, 아마도 모든 값이 자동으로 deltamove 변환하지는 that& # 39 의 all you need.

오류 처리

하지만 와일드링이 can& # 39 로 변환할 수 없는 일부 값을 숫자, 문자? 'to_numeric () 는' 도 '키워드' 오류 '난', 또는 간단히 할 수 있는 인수 인력용 비사양 숫자 값이 들어 있는 열 무시하시겠습니까 이 값을.

39 의 's' 를 사용한 예는 here& 일련의 문장열 디스크입니다. diskid 객체에는 트리프:

>>> s = pd.Series(['1', '2', '4.7', 'pandas', '10'])
>>> s
0         1
1         2
2       4.7
3    pandas
4        10
dtype: object

39 는 기본 동작 경우, 값을 변환하시겠습니까 can& 올릴 수 없다. 이 경우, # 39, & # 39, 문자열 t 대응하기 can& pandas& # 39;:

>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')
ValueError: Unable to parse string

39, & # 39 pandas& 페일오버합니다 아닌 구하사 원할 수도 있습니다. 실종된 것으로 간주되려면 / 나쁜거라 숫자 값. '난' 위압하다 수 있습니다 잘못된 값을 사용하여 다음과 같이 '키워드' 오류뿐만 인수:

>>> pd.to_numeric(s, errors='coerce')
0     1.0
1     2.0
2     4.7
3     NaN
4    10.0
dtype: float64

세 번째가 바로 작업에 대한 잘못된 값을 발견될 경우 '오류' 무시하려면.

>>> pd.to_numeric(s, errors='ignore')
# the original Series is returned untouched

이 옵션은 특히 유용한 변환할 때 마지막 다테프라임 전체를 don& # 39 의 열 수 있지만, 아직 알 수 있는 t 변환하지는 안정적으로 숫자 유형:. 이 경우 그냥 쓰기:

df.apply(pd.to_numeric, errors='ignore')

이 함수는 각 열 (다테프라임 적용된다. 열 수 없는 반면, 열 변환하지는 유형은 변환할 수 있는 숫자 (예: 문장열 포함된 숫자가 아닌 것 또는 날짜) 혼자 남게 된다.

다운카스팅

기본적으로 변환 () '와' 너 '를' '또는' float64 to_numeric 부여하느뇨 int64 트리프 (또는) 는 어떤 정수 너버 데이터베이스에구성원을 platform).

39 의 보통 that& 그리웠댔지, 하지만 와일드링이 일부 메모리 저장 및 사용, 더 하고 싶은 것 ',' 또는 'int8 컴팩트형 트리프 float32'?

& # 39 옵션을 사용하면 to_numeric () '' 으로 돌아가도 록 하여주소서 # 39, & # 39, & # 39 signed& integer&,, # 39, & # 39,, # 39 unsigned& float& # 39;. 예를 들어, 정수) 의 's # 39 here& 유형: 단순 시리즈

>>> s = pd.Series([1, 2, -7])
>>> s
0    1
1    2
2   -7
dtype: int64

39, & # 39 를 다운카스팅 integer&. 사용 가능한 가장 작은 정수 값을 가질 수 있는.

>>> pd.to_numeric(s, downcast='integer')
0    1
1    2
2   -7
dtype: int8

39, & # 39 를 다운카스팅 float&. 보통 때보다 떠 있는 작은 partnernet 선택 유형:

>>> pd.to_numeric(s, downcast='float')
0    1.0
1    2.0
2   -7.0
dtype: float32
  • 2. '아스트리프 ()'

    ['아스트리프 ()'] (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.astype.html) 이 방법을 사용하면 명시적 또는 시리즈에 대한 운영까지도 너회의 다테프라임 가봤다네 트리프 사용할 수 있습니다 # 39 의 it& 다용성 수 있다는 점에서 매우 가서 시도하시겠습니까 한 유형을 any other.

    기본 사용법

    그냥 선택 유형: 누마피 트리프 사용할 수 있습니다 (예를 들어 'np.int16'), 일부 파이썬 유형 (예를 들어 부울) 또는 특정 판다 유형 (같은 범주 트리프). Security. 방법 () '와' 아스트리프 변환할지 운영까지도 객체에 대한 it 당신꺼에요 변환하십시오 나선다.

# convert all DataFrame columns to the int64 dtype
df = df.astype(int)

# convert column "a" to int64 dtype and "b" to complex type
df = df.astype({"a": int, "b": complex})

# convert Series to float16 type
s = s.astype(np.float16)

# convert Series to Python strings
s = s.astype(str)

# convert Series to categorical type - see docs for more details
s = s.astype('category')

내가 말한 try&quot 디이브이 "; - 어떻게 알 수 없는 경우 '아스트리프 ()' 에 값을 변환하십시오 시리즈이거나 다테프라임 얻게된다면 부활시켜 오류가 발생했습니다. 예를 들어 있는 경우 '' 난 '또는' ll get it, inf you& 정수 값을 # 39 한 변환할지 오류가 발생했습니다. Vmware. & # 39 마리의 0.20.0 이 오류가 전달하여, # 39, ignore& 오류뿐만 억제할 수 '='. 기존 객체가 반품하십시오 그대로 둡니다.

조심해

하지만 ',' () 는 때때로 아스트리프 강하심과 변환하십시오 값뿐 &quot incorrectly". 예를 들면 다음과 같습니다.

>>> s = pd.Series([1, 2, -7])
>>> s
0    1
1    2
2   -7
dtype: int64

이들은 작은 정수, 메모리 저장하라는 서명되지 않은 8 비트 문자 변환 어때요?

>>> s.astype(np.uint8)
0      1
1      2
2    249
dtype: uint8

하지만 - 7 은 될 수 있도록 변환 협력했습니다 랩된 라운드하지 249 (즉, sup&gt 2&lt 8&lt /sup>;; 7)! 돌아가도 록 하여주소서 pd.to_numeric 사용하여 하는 ' (s, & # 39, unsigned& 돌아가도 록 하여주소서 = # 39;)' 대신 이 오류를 방지할 수 있다.

3 infer_objects () '.'

['Infer_objects ()'] 의 버전 0.21.0 판다 등이 이 방법 (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.infer_objects.html) 의 열 수 있는 데이터 형식 객체에는 다테프라임 변환하기 위한 구체적인 유형 (소프트 변환에는). 예를 들어, 두 개의 열로 객체에는 here& # 39 을 다테프라임 유형:. 실제 정수, 나머지 한 문장열 정수 사이트용 보유하고 있다.

>>> df = pd.DataFrame({'a': [7, 1, 5], 'b': ['3','2','1']}, dtype='object')
>>> df.dtypes
a    object
b    object
dtype: object

Infer_objects 사용하여 열 & # 39 () ',' a& # 39, 유형을 변경할 수 있습니다. int64 로.

>>> df = df.infer_objects()
>>> df.dtypes
a     int64
b    object
dtype: object

열 b& # 39, & # 39. 그동안 방치된 아닌 정수 값을 문장열 이래 있었다. 모두 열 경우 강제로 변환되게 그들이성년에 시도하시려면 및 정수 유형 (int) '대신' 드프리아티페 사용할 수 있습니다.

해설 (8)

이건 어때?

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
df
Out[16]: 
  one  two three
0   a  1.2   4.2
1   b   70  0.03
2   x    5     0

df.dtypes
Out[17]: 
one      object
two      object
three    object

df[['two', 'three']] = df[['two', 'three']].astype(float)

df.dtypes
Out[19]: 
one       object
two      float64
three    float64
해설 (10)

아래 코드는 이 데이터 형식 변경) 의 열.

df[['col.name1', 'col.name2'...]] = df[['col.name1', 'col.name2'..]].astype('data_type')

대신 자료형 (int, float, str 같은 데이터 형식 드와이트 진행하시겠습니까 상술합니다 제공하세요 수 있습니다.

해설 (2)

이것은 함수의 인수로 다테프라임 목록과 모든 데이터를 처리하는 한 강제 변환 열과 열에 숫자와.

# df is the DataFrame, and column_list is a list of columns as strings (e.g ["col1","col2","col3"])
# dependencies: pandas

def coerce_df_columns_to_numeric(df, column_list):
    df[column_list] = df[column_list].apply(pd.to_numeric, errors='coerce')

이에 대해 페일세이프 (예:

import pandas as pd

def coerce_df_columns_to_numeric(df, column_list):
    df[column_list] = df[column_list].apply(pd.to_numeric, errors='coerce')

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['col1','col2','col3'])

coerce_df_columns_to_numeric(df, ['col2','col3'])
해설 (1)

39 만, ve I& 때 필요한 특정 열을 지정할 수 있으며, # 39, ve I& 명시성, I want to be used (당 문서 위치를).

dataframe = dataframe.astype({'col_name_1':'int','col_name_2':'float64', etc. ...})

그래서 원래 질문은 하지만 열 이름을 사용하여 제공할 예정이다.

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['col_name_1', 'col_name_2', 'col_name_3'])
df = df.astype({'col_name_2':'float64', 'col_name_3':'float64'})
해설 (0)

어떻게 다테프럼스 작성에 대한 그들의 열 두 개의 각각 다른 대한 데이터 형식, 그 후 추가 사귀는거야?

d1 = pd.DataFrame(columns=[ 'float_column' ], dtype=float)
d1 = d1.append(pd.DataFrame(columns=[ 'string_column' ], dtype=str))
  • 결과 *
In[8}:  d1.dtypes
Out[8]: 
float_column     float64
string_column     object
dtype: object

부동 소수점 com/go/4e6b330a_kr 다테프라임 작성되고, 후에 제 1 열이 있고 문장열 채웁니다 수 있습니다 (또는 데이터 종류에 모든 것) 에 2 열입니다.

해설 (0)

약간의 차이는 있지만 사실은 내가 할 수 있는 줄 알았는데 경식도 비슷한 문제를 안고 있는 문제를 쉽게 해결할 수 있습니다. # 39 에 달하는 이 질문을 보고 it& 타인에 대한 여러분의 의견을 확인하는 형식을 목록. 저의 경우는 수치는 xam 유동합니다 문장열 아닌 것처럼 질문:

a = [['a', 1.2, 4.2], ['b', 70, 0.03], ['x', 5, 0]]

그러나 목록을 작성하기 전에 내가 너무 처리하여 다테프라임 손실됩니다 유형 및 설명하였노라 문자열으로 됩니다.

누마피 어레이입니다 통해 데이터 프레임을 만드는

"' df = pd. 다테프라임 (np.라이 (a))

df 아웃해야 [5]: 0 1 2 0 은 1.2 4.2 70 0.03 1 b 2 x 5 0

[1] 스트리프 df 아웃해야 [7]: 트리프 (& # 39, O& # 39;) "'

같은 데이터 프레임을 같이 될 수 있는 것으로 1 과 2 는 열에 엔트리입니다 써줬지 그러나 하는 "' df = pd. 다테프라임 (a)

df 아웃해야 [10]: 0 1 2 0 은 1.2 4.20 1 b 70.0 0.03 2 x 5.0 0.00

[1] 스트리프 df 아웃해야 [11]: 트리프 (& # 39, float64& # 39;) "' 실제로 데이터 프레임을 만들 수 있는 올바른 형식이 열

해설 (0)