【发布时间】:2020-04-21 23:30:00
【问题描述】:
我有一个 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: ("cannot convert the series to ", u'occurred at index 0')
和
df[0:1].apply(locale.atof)
给出另一个错误:
ValueError: ('invalid literal for float(): 1,200', u'occurred at index 0')
那么,如何将这个 DataFrame 字符串转换为浮点数据帧?
【问题讨论】:
-
老问题,但 OP 收到该错误,因为 DataFrame 上的
apply将整个 column 作为一个系列传递给函数(在本例中为locale.atof,它需要一个字符串)。如果您使用@AndyHayden 在下面的答案中所做的applymap方法,您应该可以做到这一点。