【问题标题】:Pandas int/null issue : ValueError: invalid literal for int() with base 10:Pandas int/null 问题:ValueError:int() 以 10 为底的无效文字:
【发布时间】:2020-10-12 08:15:51
【问题描述】:

我的数据框中的下面的“总计”列包含带有额外 .0 (1.0,2.0..) 和 Null 值的整数。 在将数据导出到 csv 之前,当执行下面的代码行时,它会抛出错误: ValueError: invalid literal for int() with base 10: ''

df['Total'] = df['Total'].astype('Int64')

如何处理具有 int & null 值的列。同时,如果我删除上述验证,总输出列将额外出现 .0(例如:11.0、199.0、33.0 等)。我想将纯 int/null 导出到我的 csv。 非常感谢任何帮助。

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    似乎有一些非数值,您可以尝试to_numericerrors='coerce' 将此值转换为NaNs:

    df['Total'] = pd.to_numeric(df['Total'], errors='coerce').astype('Int64')
    

    【讨论】:

    • 非常感谢您的回复:经过上述更改,现在我遇到以下错误:raise ValueError('Cannot convert non-finite values (NA or inf) to ' ValueError: Cannot convert non - 有限值(NA 或 inf)到整数
    • @RK。 - 我想问题是像32.4 这样的浮点值,df['Total'] = pd.to_numeric(df['Total'], errors='coerce').round().astype('Int64') 如何通过循环将32.4 转换为32
    • 它只有所有的 int/null 值。 32.0、12.0等整数。点后没有值,我们也可以修剪它。
    • @RK。 - 你的熊猫版本是什么?因为只能在大约 5 个最新版本的 pandas 中转换为整数,pandas 0.24+
    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2016-01-22
    • 2018-03-26
    • 2017-08-26
    • 2021-07-23
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多