现在我正在处理一个包含报废数字的文件,但每当我试图用它们进行一些计算时,就会弹出ValueError(基数为10的int((的无效文本:'6,92'(。
我用来从网上获取数字的代码如下:
numberX = driver.find_element_by_xpath('//*[@id="form1"]/div[3]/div/div/div[1]/div[2]/div/div/div[3]/span/i').text
number = ''
for i in numberX:
if i in '0123456789,':
number += i
"numberX"包含字母数字值,但"number"不包含。不过,"number"的数据类型是object。
我试过:
df['number'].astype(str).astype(int)
但会弹出相同的ValueError。
如果我将数据导出到Excel,具有"数字"值的列将以文本格式显示,Excel可以将它们转换为数字。此外,我已经检查过了,这些值只包含数字和逗号(','(。
打印的数据帧的一部分看起来像这样:
Date Amount Number
0 11/04/2020 10000 6,92
1 11/04/2020 10000 6,77
2 11/04/2020 10000 6,66
3 11/04/2020 10000 6,59
你知道会发生什么吗?
提前感谢!
首先转换为float而不是int是否适用?
df['number'] = df['number'].astype(str).astype(float)
如果你想转换成int,你仍然可以多走一步:
df['number'] = df['number'].astype(str).astype(float).astype(int)
您也可以通过已经回答的问题找到这个解决方案:ValueError:基数为10的int((的文字无效:'';
更新
也需要用点替换逗号:
df['number'].apply(lambda x: x.replace(',','.')).astype(float)
我认为您可能需要替换,
,然后将其转换为int
。
df['number'] = df['number'].str.replace(',','').astype(int)
您可以执行以下操作:-
df['number'] = df['number'].astype('int32')