我正在抓取WSJ的数据,特别是Adv. volume*
和Decl. volume*
数字。
所以在这个例子中,我需要对前6位数进行舍入。比如Adv。 volume *的编号为92,461,567,将四舍五入为92,462。在某些情况下,这个数字可能是921,324,745,在这种情况下它将会转到921,325。我只需要前两组数字,第一组中是否有2或3个数字用逗号分隔。我确实使用了圆形功能,但它并不总是正确地为我圆。
我如何做到这一点的一个例子如下:
Adv_Vol = Adv_Vol.replace(',','')
Adv_Vol = '%d' % (round(float(Adv_Vol[:7])))
这样做的方法是什么,以便准确处理第一组数字中是否有2位或3位?
答案 0 :(得分:1)
你没有小数,所以你不应该首先进行四舍五入。这样做:
>>> x = "123,456,789"
>>> y = "23,456,789"
>>> xi = int(x.replace(',', ''))
>>> yi = int(y.replace(',', ''))
>>> print xi / 1000
123456
>>> print yi / 1000
23456
>>> print int(round(xi, -3))/1000
123457
>>> print int(round(yi, -3))/1000
23457
答案 1 :(得分:0)
如果你想减少最后3位非常简单的数字:
Adv_Vol = '92,461,567'
stripped = Adv_Vol.replace(',','')[:-3] # returns 92461
但是如果你需要进行舍入,那么它仍然不是很复杂:
rounded = int(round(float(Adv_Vol.replace(',',''))/1000.0)) # returns 92462