如何在pandas中使用base 10错误修复int()的无效文字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在pandas中使用base 10错误修复int()的无效文字相关的知识,希望对你有一定的参考价值。

这是每当我尝试将数据帧转换为int时出现的错误。

(“具有基数10的int()的无效文字:'260,327,021'”,'发生在索引Population1'

df中的所有内容都是数字。我假设错误是由于最后的额外报价,但我该如何解决?

答案

我跑了这个

int('260,327,021')

得到这个

---------------------------------------------------------------------------
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
另一答案

当字符串是float时,其他人可能会遇到以下问题:

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

解决方法是首先转换为float,然后转换为int:

>>> int(float("34.54545"))
34

或者特定的熊猫:

df.astype(float).astype(int)

以上是关于如何在pandas中使用base 10错误修复int()的无效文字的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas 附加 BigQuery 表时如何修复无效架构

使用 Gitlab CI docker-in-docker 时如何修复 docker 容器中的“sh: tsc not found”错误

Select rows from a DataFrame based on values in a column in pandas

如何修复“pandas.core.common”没有属性“AbstractMethodError”?

NameError:未定义 Python 名称“BASE_DIR”如何修复?

pandas使用组合条件判断数据列的内容筛选符合条件的数据行(selecting rows based on a condition in dataframe)