2016-09-14 5 views
1

이 분명 STR 타입 시리즈를 STR 변환 내가


pd.to_numeric(s, 'ignore').apply(type) 

0 <type 'str'> 
1 <type 'str'> 
dtype: object 

s

s = pd.Series(['a', '1']) 

pd.to_numeric(s, 'ignore') 

0 a 
1 1 
dtype: object 
을 고려 할 수 있습니다 숫자에 일련의 입력, 두 가지 유형은 여전히 ​​문자열입니다. 'ignore' 옵션은 엔트리 시리즈 변환을 무시하는 것으로 보입니다. 내가 할 수있는 일을하고 나머지는 무시하는 방법.

나는 일련의 유형

pd.to_numeric(s, 'ignore').apply(type) 

0 <type 'str'> 
1 <type 'int'> 
dtype: object 

편집되고 싶어 : 나는이 질문을 게시 한 후이 함께 와서 @ayhan 후 답변을 제공했다.

내 솔루션
은 벡터화,하지만 이것은 내가 사용하고 무엇

s.apply(pd.to_numeric, errors='ignore') 
+1

내가 돈 너의 퀘스트를 이해하지 못해. 에. 당신은'pd.to_numeric (s, errors = 'coerce')'와 같은 것을하고 NaN하지만 하나의 일반적인 dtype'float64'을 갖거나'object' dtype을가집니다. 하나의 시리즈 내에서 dtypes를 혼합 할 수는 없습니다. AFAIK – MaxU

+0

@MaxU 저는 시리즈의'dtype'에 관심이 없습니다. 개별 요소의'type'을 숫자가 될 수있는 곳으로 만들고 싶습니다. – piRSquared

+2

@MaxU 후자의'dtype' 객체는 형식이 강제적이지 않으면'Series'는 혼합 된 dtype을 지원하고'dtype'은'object'가 될 것이지만 각 요소는 'str','int'이 경우 – EdChum

답변

3

정확히 원하는 걸 제공되지 않음 :

pd.to_numeric(s, errors='coerce').fillna(s) 
Out: 
0 a 
1 1 
dtype: object 

pd.to_numeric(s, errors='coerce').fillna(s).apply(type) 
Out: 
0  <class 'str'> 
1 <class 'float'> 
dtype: object 
+0

입니다 만, 결과적으로'object' 계열 dtype이 다시 나타납니다. – MaxU

+1

@MaxU 예, 컨테이너는 객체 유형이지만 개별 숫자는 숫자로 처리됩니다. 때로는 작업을 적용 할 때 숫자로 평가할 필요가있을 수 있습니다. – ayhan