编程语言
首页 > 编程语言> > 将字符串中的负数转换为float(Python)?

将字符串中的负数转换为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