У меня есть 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 с плавающей запятой?
apply
в DataFrame весь столбец передается функции в виде серии (в данном случаеlocale.atof
, которая ожидает строку). Если вы используетеapplymap
метод, который @AndyHayden использует в ответе ниже, у вас все должно получиться нормально.