2016-09-14 3 views
1

は明らかに、両方のタイプは、まだ文字列ですsは変換strが数値にシリーズを入力したところ、私は

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

pd.to_numeric(s, 'ignore') 

0 a 
1 1 
dtype: object 

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

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

STR型のシリーズを考えることができます。 'ignore'オプションはエンジェリ級数変換を無視するようです。できることをして残りを無視するにはどうすればいいですか?

私はシリーズのタイプが

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

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

EDITになりたい:私は質問を投稿して@ayhan後に答えを提供した後、私はこの思い付きました。

私のソリューション
はベクトル化が、私はこれは私が使っているものです

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

私ドンあなたのクエストを理解していないに。 'pd.to_numeric(s、errors = 'coerce')'のようなものを実行し、NaNだけでなく、一般的なdtype 'float64'を持っているか、' object' dtypeを持っています。 1つのシリーズ内にdtypesを混在させることはできません。AFAIK – MaxU

+0

@MaxU私はシリーズの 'dtype'には関心がありません。私は個々の要素の '型'ができるところでは数値であることを望んでいます。 – 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

関連する問題