2017-05-27 23 views
0

PythonでNumpyとPandasライブラリを使用してPythonの列のデータ型を変更しようとしましたが、次のエラーが発生しています。列csvファイルのデータ型を変換する - Python

dataset.fillna(1E6).astype(int型)

D:\Softwares\Python3.6.1\python.exe D:/PythonPractice/DataPreprocessing/DataPreprocessing_1.py 
Traceback (most recent call last): 
    Country Age Salary Purchased 
    File "D:/PythonPractice/DataPreprocessing/DataPreprocessing_1.py", line 6, in <module> 
    dataset.fillna(1e6).astype(int) 
0 France 44.0 72000.0  No 
1 Spain 27.0 48000.0  Yes 
    File "D:\Softwares\Python3.6.1\lib\site-packages\pandas\util\_decorators.py", line 91, in wrapper 
2 Germany 30.0 54000.0  No 
3 Spain 38.0 61000.0  No 
    return func(*args, **kwargs) 
4 Germany 40.0  NaN  Yes 
    File "D:\Softwares\Python3.6.1\lib\site-packages\pandas\core\generic.py", line 3299, in astype 
    **kwargs) 
    File "D:\Softwares\Python3.6.1\lib\site-packages\pandas\core\internals.py", line 3224, in astype 
5 France 35.0 58000.0  Yes 
    return self.apply('astype', dtype=dtype, **kwargs) 
6 Spain NaN 52000.0  No 
    File "D:\Softwares\Python3.6.1\lib\site-packages\pandas\core\internals.py", line 3091, in apply 
7 France 48.0 79000.0  Yes 
    applied = getattr(b, f)(**kwargs) 
8 Germany 50.0 83000.0  No 
    File "D:\Softwares\Python3.6.1\lib\site-packages\pandas\core\internals.py", line 471, in astype 
9 France 37.0 67000.0  Yes 
    **kwargs) 
    File "D:\Softwares\Python3.6.1\lib\site-packages\pandas\core\internals.py", line 521, in _astype 
    values = astype_nansafe(values.ravel(), dtype, copy=True) 
    File "D:\Softwares\Python3.6.1\lib\site-packages\pandas\core\dtypes\cast.py", line 625, in astype_nansafe 
    return lib.astype_intsafe(arr.ravel(), dtype).reshape(arr.shape) 
    File "pandas\_libs\lib.pyx", line 917, in pandas._libs.lib.astype_intsafe (pandas\_libs\lib.c:16260) 
    File "pandas\_libs\src\util.pxd", line 93, in util.set_value_at_unsafe (pandas\_libs\lib.c:73093) 
ValueError: invalid literal for int() with base 10: 'France' 

すべてのヘルプは高く評価されるだろう。ありがとうございました:)

+0

__ValueError:ベース10と()int型のための無効なリテラル:「フランス」__ – Nabin

+0

それはあなたが整数型を期待しますが文字列を取得していることを意味します。 __France__ワードがdataset.iloc ' – Nabin

答えて

1

エラーメッセージ - ValueError: invalid literal for int() with base 10: 'France' - は、Country列を使用しています。内容は文字列であり、整数には変更できません。範囲を調整してみてください。

+0

鋳造方法で渡される[:, 1:3] .fillna(1E6).astype(INT)プリント(dataset.dtypes)は'依然としてカラムcontainigのデータ型がナン –

+0

としてのfloat64与えますエラーが発生しました –

+0

実際にシリーズを新しいdtypeに等しく設定する必要があります。 'dataset.iloc [:, 1:3] = dataset.iloc [:, 1:3] .astype(int)'です。 – FiscalTwinkie

0

あなたは、あなたがしなければならない、整数に 'フランス' を変換することはできません。

dataset['Country'] = dataset['Country'].map({'France': 0, 'Spain': 1, 'Germany': 2})] 

その後:

dataset['Country'].astype(int) 

をこのようなエラーがまだ存在する場合:

ValueError: Cannot convert non-finite values (NA or inf) to integer

は、

にはNaNがあるためです。

NaNfillna()またはdrop()などと対処してください。

関連する問題