2017-01-11 10 views
0

私は数値でなければならない値のリストを持っています。今、彼らはしかし、オブジェクトです:オブジェクトをintに変換します

later  object 
opstarten object 
dtype: object 

私がやっによってSTR型に列を変更しようとしました:

df_analyse_num[["later"]] = df_analyse_num[["later"]].astype(str) 

これは私が私のタイプそれを分析する場合が起こす動作するようには思えませんまだオブジェクトと言います。

また、私はそれを文字列に変換しようとすると何かがうまくいかない。私が行う場合:これはうまくいかない

File "pandas\lib.pyx", line 937, in pandas.lib.astype_intsafe (pandas\lib.c:16667) 
File "pandas\src\util.pxd", line 60, in util.set_value_at (pandas\lib.c:67540) 
ValueError: invalid literal for int() with base 10: '30.0' 

任意の考え:

df_analyse_num[["later"]] = df_analyse_num[["later"]].astype(str).astype(int) 

それは私に次のエラーを与えますか?

+0

ないパンダの専門家が、 'その後、int'をfloat''てみてください:: '

int(float('30.0')) 

は、結果を期待しますsomething.astype(str).astype(float).astype(int) ' –

+0

本当にありがとう! –

+2

第1に、 'object'はこれが正しいnumpyオブジェクト型を参照しています。パンダの' dtype'として 'str'が見えず、列を数値に変換したい場合は' pd.to_numeric(df_analyse_num ["後で"]、errors = 'coerce')'これは適切な型を推論します。欠落値がないところでは 'int'を返し、そうでなければすべての値を' int'に変換します。 'df_analyse_num [[" later "]]'は、あなたが知らなかった場合のシリーズではなく、単一の列dfを返します – EdChum

答えて

1

ないパンダの専門家ではなく、intそして、フロートを示し、小数点を扱うことがfloat最初のを試してみてください。ここで

something.astype(str).astype(float).astype(int) 

は「ネイティブ」のpythonでの問題である:

int('30.0') 
同様に失敗し

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '30.0' 

我々は最初のfloatを使用する場合はintfloatを変換することが可能であるため、それは動作します:

30 
関連する問題