python - 使用 astype 更改 pandas 中的数据类型时出错
问题描述
我在这里发现了一个类似的问题,但该解决方案对我不起作用。有人可以帮我理解我做错了什么吗?
>>> df.dtypes
Name object
Country object
Product object
Price object
dtype: object
>>> df['Price'] = df['Price'].astype(str).astype(int)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\smuf2\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\generic.py", line 5815, in astype
```new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors)```
File "C:\Users\smuf2\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\internals\managers.py", line 418, in astype
return ```self.apply("astype", dtype=dtype, copy=copy, errors=errors)```
File "C:\Users\smuf2\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\internals\managers.py", line 327, in apply
```applied = getattr(b, f)(**kwargs)```
File "C:\Users\smuf2\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\internals\blocks.py", line 592, in astype
```new_values = astype_array_safe(values, dtype, copy=copy, errors=errors)```
File "C:\Users\smuf2\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\dtypes\cast.py", line 1309, in astype_array_safe
```new_values = astype_array(values, dtype, copy=copy)```
File "C:\Users\smuf2\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\dtypes\cast.py", line 1257, in astype_array
```values = astype_nansafe(values, dtype, copy=copy)```
File "C:\Users\smuf2\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\dtypes\cast.py", line 1174, in astype_nansafe
return ```lib.astype_intsafe(arr, dtype)```
File "pandas\_libs\lib.pyx", line 679, in pandas._libs.lib.astype_intsafe
ValueError: invalid literal for int() with base 10: '1,200'
我是 python 新手,不知道这意味着什么。非常感谢一些帮助。
解决方案
您的列包含带有,
数字分组符号的字符串。您可以将其替换为空(去掉它)或下划线:
df['Price'].str.replace(',', '').astype(int)