Car*_*irl 4 int python-2.7 pandas jupyter-notebook valueerror
每当我尝试将数据框转换为int时,就会出现此错误。
(“以10为底的int()的无效文字:'260,327,021'”,“发生在索引Population1上”
df中的所有内容都是数字。我认为错误是由于末尾的额外引号引起的,但是我该如何解决?
我跑这个
int('260,327,021')
Run Code Online (Sandbox Code Playgroud)
并得到这个
Run Code Online (Sandbox Code Playgroud)--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-448-a3ba7c4bd4fe> in <module>() ----> 1 int('260,327,021') ValueError: invalid literal for int() with base 10: '260,327,021'
我向您保证,并非数据框中的所有内容都是数字。它可能看起来像一个数字,但是它是一个带有逗号的字符串。
您需要替换逗号,然后转到 int
pd.Series(['260,327,021']).str.replace(',', '').astype(int)
0 260327021
dtype: int64
Run Code Online (Sandbox Code Playgroud)
当字符串是浮点数时,其他人可能会遇到以下问题:
>>> int("34.54545")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '34.54545'
Run Code Online (Sandbox Code Playgroud)
解决方法是先转换为浮点数,然后再转换为整数:
>>> int(float("34.54545"))
34
Run Code Online (Sandbox Code Playgroud)
或熊猫特定:
df.astype(float).astype(int)
Run Code Online (Sandbox Code Playgroud)
我使用pandas.to_numeric解决了错误
就你而言,
data.Population1 = pd.to_numeric(data.Population1, errors="coerce")
Run Code Online (Sandbox Code Playgroud)
“数据”是父对象。
之后,您也可以将 float 转换为 int
data.Population1.astype(int)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5642 次 |
| 最近记录: |