我有一个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:(““无法将序列转换为“”,u“出现在索引0”处)
以及
df[0:1].apply(locale.atof)
给出另一个错误:
ValueError:('float()的文字无效:1,200 ',u'出现在索引0 '处)
那么,如何将这个DataFrame
字符串转换为一个DataFrame浮点数呢?
4条答案
按热度按时间xcitsw881#
如果您是reading in from csv,则可以使用thousands arg:
此方法可能比作为单独步骤执行操作更有效。
您需要先执行set the locale:
k2fxgqgv2#
您可以像这样一次转换一列:
pobjuy323#
您可以使用panda.Series.str.replace方法:
此方法可以移除或替换字符串中的逗号。
eh57zj3b4#
这将适用于字符串,如“-55,00”或“5.500,00”,并将它们分别转换为浮点数-55.00和5500.00。