【问题标题】:ValueError: invalid literal for int() with base 10: ' ' when convert type of dataValueError: int() 以 10 为基数的无效文字:'' 转换数据类型时
【发布时间】:2021-12-03 10:35:02
【问题描述】:

我正在更改 python 中的数据类型。 首先,我的数据集如下所示:

我检查了每一列的数据集类型:

#输出:

然后当我想用这段代码转换数据集时:

df_tr = df1_dlq_slice.replace({'C': -1, 'F': -2, 'Z': -3}).astype(int).T
df_tr.head()

ValueError: int() 以 10 为基数的无效文字:' ' 发生了。

【问题讨论】:

    标签: python pandas dataframe type-conversion


    【解决方案1】:

    第一个想法是替换空字符串(以及所有其他值):

    df_tr = df1_dlq_slice.replace({'C': -1, 'F': -2, 'Z': -3,'':0}).astype(int).T
    

    或者如果需要在replace 之后将所有其他值转换为0 使用:

    df_tr = (df1_dlq_slice.replace({'C': -1, 'F': -2, 'Z': -3})
                          .apply(pd.to_numeric, errors='coerce')
                          .fillna(0)
                          .astype(int)
                          .T)
    

    对于测试有问题的值,请使用:

    df1 = df1_dlq_slice.replace({'C': -1, 'F': -2, 'Z': -3})
    
    s = df1.stack()
    L = s[pd.to_numeric(s, errors='coerce').isna()].unique().tolist()
    print (L)
    

    【讨论】:

    • 它不起作用。仍然有同样的错误
    • @AnwarSanusi - 错误是一样的吗? ''' ' 之间没有空格?
    • @AnwarSanusi - 答案已编辑,您的真实数据中的print (L) 是什么?
    • 知道了。它通过给出一个像''这样的空间来解决。谢谢
    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 2013-08-04
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    相关资源
    最近更新 更多