当前位置: 首页 > 面试题库 >

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

澹台承
2023-03-14
问题内容

我有一个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?


问题答案:

如果您要从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


 类似资料:
  • 问题内容: 如何将字符串转换为JavaScript数组? 看一下代码: 在这种情况下,将弹出一个。当它是一个数组时,它会弹出一个,而当它被调用时,它应该弹出一个。 是否有机会将此类字符串转换为JavaScript数组? 问题答案: 对于像这样的简单数组成员,可以使用。 这为您提供了一个数字数组。 如果使用,则会得到一个字符串数组。 请注意,这将限制您使用受支持的数据类型。如果您需要类似或函数的值,

  • 问题内容: 我想将一个整数35634646转换为千位“,”,所以它应该是35634646。 最快的方法是什么? 问题答案:

  • 问题内容: 在Python中,有什么干净而优雅的方法可以将字符串“ 1,374”或“ 21,000,000”转换为int值(如1374或21000000)? 问题答案: 这实际上取决于您从哪里获得电话号码。 如果您尝试转换的数字来自用户输入,请使用。这样,将以与用户设置以及期望值一致的方式来解析数字。 另一方面,如果您从文件中读取文件,则该文件始终使用相同的格式,使用方式或取决于您的情况。这不仅易

  • 问题内容: 如何在Java中转换为逗号分隔的字符串? 结果我想要: 这是非常相似的参考问题,但是这些解决方案都无法提供结果,这正是我所需要的。 到目前为止我尝试过的 问题答案: 这是一个流版本,在功能上等同于khelwood,但使用了不同的方法。 他们都创建了一个,将每个映射到一个,并用逗号将它们连接在一起。 它们在性能上也应该完全相同,尽管从 技术上讲 我是直接打电话给他,而他是在打电话给代表。

  • 如何在Java中将int[]转换为逗号分隔的字符串? 我想要的结果是: 这里有非常相似的参考问题,但这些解决方案都没有提供我需要的结果。 > 如何在Java中使用toString方法将int数组转换为String 如何在不SomeType@2f92e0f4的情况下打印Java对象? 如何转换列表 到目前为止我所做的,