将字符串中的负数转换为float(Python)?
作者:互联网
好.我放弃.
我有一个DataFrame,其中包含一个大数列(“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 thingy(处理列中的所有元素),我需要在函数中:
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有一个简单的函数/方法可以将我的数字(包括负数)转换为我可以计算的数字吗?
解决方法:
这应该可以解决您的问题.问题是将列的第一个值作为值使用pd.Series.values [0].
import pandas as pd
s = pd.Series(['-1 000 000,00'])
def make_float(num):
num = num.replace(' ','').replace(',','.')
return float(num)
s.map(make_float)
# 0 -1000000.0
# dtype: float64
make_float(s.values[0])
# -1000000.0
标签:python,numbers,negative-number 来源: https://codeday.me/bug/20190627/1305066.html