首页 > 解决方案 > ValueError: int() 以 10 为底的无效文字:''Python 数据库

问题描述

EditCalc = input('What file do you want to modify')
Dept = input('What department?')
EditCalc = int(EditCalc)



month = 'Jan'
if EditCalc % 12 == 0:
    month = 'Jan'
if EditCalc % 12 == 1:
    month = 'Feb'
if EditCalc % 12 == 2:
    month = 'Mar'
if EditCalc % 12 == 3:
    month = 'Apr'
if EditCalc % 12 == 4:
    month = 'May'
if EditCalc % 12 == 5:
    month = 'Jun'
if EditCalc % 12 == 6:
    month = 'Jul'
if EditCalc % 12 == 7:
    month = 'Aug'
if EditCalc % 12 == 8:
    month = 'Sep'
if EditCalc % 12 == 9:
    month = 'Oct'
if EditCalc % 12 == 10:
    month = 'Nov'
if EditCalc % 12 == 11:
    month = 'Dec'

year = EditCalc//12 + 14

editheadercalc= str(month)+'-'+str(year)+'\nQty'


editfile = pd.read_csv(str(EditCalc)+'.csv', encoding='latin-1')
editfilevalues= editfile.loc[editfile['Customer'].str.contains(Dept, na=False), str(editheadercalc)] 
editfilevalues = editfilevalues.fillna(int(0))
int_series = editfilevalues.astype(int) 
calculated_series = editfilevalues.apply(lambda x: x*1.3) 


print(editfilevalues)

所以在这段代码中,我试图操作来自特定文件的数据。用户输入用于查找文件,然后根据我输入的文件查找特定的头文件,因为我需要根据文件编号的头文件。例如文件 53 是 2018 年 6 月的销售预测,所以我需要在 csv 文件中找到具有该标题的标题,并且我想将这些值乘以我想要的任何值(进行调整后的预测)但是我收到以下错误:

return lib.astype_intsafe(arr.ravel(), dtype).reshape(arr.shape)
File "pandas\_libs\lib.pyx", line 456, in pandas._libs.lib.astype_intsafe
File "pandas/_libs/src\util.pxd", line 142, in util.set_value_at_unsafe
ValueError: invalid literal for int() with base 10: '    '

有任何想法吗?我不知道为什么我会收到此错误,并且有关此问题的所有其他关于 stackoverflow 的帖子都没有帮助我。谢谢!

标签: pythondataframe

解决方案


当您尝试将某些内容转换为无法转换为整数的整数时会发生此错误,例如空字符串''。您可以通过运行int('')或自行重新创建它int('this is not an integer')

要解决此问题,您可以在将输入字符串转换为整数时使用 try/except 块。您可以捕获错误并让用户尝试不同的输入,直到他们提交有效的输入。例如:

while True:
    x = input('Input a number: ')
    try:
        x = int(x)
    except ValueError:
        print('That is not a number')
    else:
        print('The number you selected is {}'.format(x))
        break

推荐阅读