난 로렌아줌마가 변환하십시오 목록을 표로 표시된 열거합니다 다테프라임 를 판다. 표시됨과 매우 간단한 예:
a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)
지정하십시오. 변환하십시오 열 수 있는 최선의 방법은 해당 유형, 이 경우 열 2 와 3 를 유동합니다? 유형을 지정할 수 있는 방법이 변환할 때 다테프라임? 또는 더 우수합니까 다테프라임 만들려면 먼저 그리곤요 루프 유형을 변경하십시오 열을 통해 각 열? 이 작업을 수행할 수 있기 때문에 이상적인 싶다 동적 길을 열 쉐퍼드도 don& 수백 t # 39, 정확히 어떤 열은 지정할 재배케하여 유형:. 내가 같은 유형의 모든 값이 들어 각 열 수 있을지 장담할 수 있다는 것입니다.
유형 3 마리의 변환하기 위한 기본 옵션이 있습니다.
가장 좋은 방법은 단 하나 이상의 숫자 값은 변환하십시오 다테프라임 사용할 수 있는 ['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 () 는' 도 '키워드' 오류 '난', 또는 간단히 할 수 있는 인수 인력용 비사양 숫자 값이 들어 있는 열 무시하시겠습니까 이 값을.
>>> s = pd.Series(['1', '2', '4.7', 'pandas', '10'])
>>> s
0 1
1 2
2 4.7
3 pandas
4 10
dtype: object
>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')
ValueError: Unable to parse string
>>> 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 옵션을 사용하면 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
>>> pd.to_numeric(s, downcast='integer')
0 1
1 2
2 -7
dtype: int8
>>> pd.to_numeric(s, downcast='float')
0 1.0
1 2.0
2 -7.0
dtype: float32
['아스트리프 ()'] (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" 디이브이 "; - 어떻게 알 수 없는 경우 '아스트리프 ()' 에 값을 변환하십시오 시리즈이거나 다테프라임 얻게된다면 부활시켜 오류가 발생했습니다. 예를 들어 있는 경우 '' 난 '또는' ll get it, inf you& 정수 값을 # 39 한 변환할지 오류가 발생했습니다. Vmware. & # 39 마리의 0.20.0 이 오류가 전달하여, # 39, ignore& 오류뿐만 억제할 수 '='. 기존 객체가 반품하십시오 그대로 둡니다.
하지만 ',' () 는 때때로 아스트리프 강하심과 변환하십시오 값뿐 " 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
['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) '대신' 드프리아티페 사용할 수 있습니다.
이건 어때?
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
이것은 함수의 인수로 다테프라임 목록과 모든 데이터를 처리하는 한 강제 변환 열과 열에 숫자와.
# 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'])
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'})
어떻게 다테프럼스 작성에 대한 그들의 열 두 개의 각각 다른 대한 데이터 형식, 그 후 추가 사귀는거야?
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 열입니다.
약간의 차이는 있지만 사실은 내가 할 수 있는 줄 알았는데 경식도 비슷한 문제를 안고 있는 문제를 쉽게 해결할 수 있습니다. # 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;) "' 실제로 데이터 프레임을 만들 수 있는 올바른 형식이 열