好的。我放弃了。
我有一个数据框,其中有一列(“Amount”)是大数字:
我希望您能将这些转换为我可以进行计算的数字。
让我们进行调查:
什么?!
我有一个数据框,其中有一列(“Amount”)是大数字:
Amount
-1 000 000,00
4 848 903,00
-2 949 234,00
13 038 023,00
7 985 232,00
....
我希望您能将这些转换为我可以进行计算的数字。
让我们进行调查:
>type(b["Amount"][0])
str
好的,这是一个字符串。
>float("-1 000 000,00".replace(' ', '').replace(',','.'))
-1000000.00
好的,非常棒!
为了创建一个 lambda 函数(用于处理列中的所有元素),我需要将其放在一个函数中:
def make_float(num):
num = num.replace(' ','').replace(',','.')
return float(num)
>make_float(b["Amount"][0])
ValueError: could not convert string to float: −1 000 000.00
什么?!
>b["Amount"][0].replace(' ','').replace(',','.')
Out[258]:
'\xe2\x88\x921\xc2\xa0000\xc2\xa0000.00'
哦不!!Unicode地狱!我放弃了。
Python是否有一个易于使用的函数/方法,可以将我的数字(包括负数)转换为可计算的内容?
num = num.replace(',','.') num = num.replace(' ','') num = num.replace('\U00002013', '-') num = num.replace(u'\N{MINUS SIGN}', '-') num = num.decode('unicode_escape').encode('ascii','ignore') num = float(num) return num
- Cronosprint(b["Amount"][0])
会打印出什么?在make_float
函数中,你能否在设置num
变量后添加print(num)
并查看它打印出了什么? - kiyahb["Amount"][0]
。 - Vikas Periyadathprint(b["Amount"][0])
的值为-1 000 000,00
。 - Cronosb["Amount"][0]
的值为'\xe2\x88\x921\xc2\xa0000\xc2\xa0000,00'
。 - Cronos