将dtype objecto转换为int Python Pandas



现在我正在处理一个包含报废数字的文件,但每当我试图用它们进行一些计算时,就会弹出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')

最新更新