简体   繁体   中英

Converting data type of a column in a csv file

I was trying to modify the data type of column in Python in Pycharm using Numpy and Pandas library but I am getting the following error.

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'

Your error message - ValueError: invalid literal for int() with base 10: 'France' - suggests you're using the Country column, the contents of which are strings and can't be changed to integers. Try adjusting your range over.

You can't transform 'France' to integer, you should:

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

then:

    dataset['Country'].astype(int)

if there is still an error like this:

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

This is due to that there is some NaN in the dataset['Country'] .

Deal with these NaN by fillna() or drop() and so on, you will resolve it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM