将pandas DataFrame中带逗号的数字字符串转换为float

发布于 2021-01-29 18:00:49

我有一个DataFrame,其中包含数字作为字符串,并带有千位标记的逗号。我需要将它们转换为浮点数。

a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)

我猜我需要使用locale.atof。确实

df[0].apply(locale.atof)

可以正常工作。我得到一系列的花车。

但是,当我将其应用于DataFrame时,会出现错误。

df.apply(locale.atof)

TypeError :(“无法将系列转换为”,在索引0处发生)

df[0:1].apply(locale.atof)

给出另一个错误:

ValueError:(’float()的无效文字:1,200’,u’发生在索引0’)

那么,如何将DataFrame字符串转换为浮点数的DataFrame?

关注者
0
被浏览
282
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果您要从csv中读取内容,则可以使用数千个arg:

    df.read_csv('foo.tsv', sep='\t', thousands=',')
    

    与作为单独步骤执行操作相比,此方法可能更有效。


    您需要先设置语言环境:

    In [ 9]: import locale
    
    In [10]: from locale import atof
    
    In [11]: locale.setlocale(locale.LC_NUMERIC, '')
    Out[11]: 'en_GB.UTF-8'
    
    In [12]: df.applymap(atof)
    Out[12]:
          0        1
    0  1200  4200.00
    1  7000    -0.03
    2     5     0.00
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看