#python #pandas #formatting
#python #панды #форматирование
Вопрос:
У меня есть несколько столбцов для форматирования как десятичное число с плавающей запятой с фиксированной точностью. Однако одновременная работа с несколькими столбцами не работает. Работа с отдельными столбцами работает. В чем причина и как ее устранить?
Работает следующее.
def shortenlength(numberToShorten):
limited_float = "{:.15f}".format(numberToShorten)
return limited_float
outputData['col1'] = outputData['col1'].apply(shortenlength)
outputData['col2'] = outputData['col2'].apply(shortenlength)
Однако следующее не работает и выдает ошибку
TypeError: строка неподдерживаемого формата, переданная в Series.форматирование
def shortenlength(numberToShorten):
limited_float = "{:.15f}".format(numberToShorten)
return limited_float
zfill_cols = ['col1', 'col2']
outputData[zfill_cols] = outputData[zfill_cols].apply(shortenlength)
Комментарии:
1. Как насчет
outputData['col1', 'col2'] = outputData[['col1', 'col2']].apply(shortenlength)
?2. Показывает ту же ошибку «строка неподдерживаемого формата, переданная в Series.__format__»
Ответ №1:
Когда вы выполняете apply
работу с фреймом данных, аргументом, передаваемым функции, являются столбцы, то есть серия. Используйте applymap
вместо:
outputData[zfill_cols] = outputData[zfill_cols].applymap(shortenlength)
Комментарии:
1. Спасибо. Работает хорошо.