Форматирование нескольких столбцов в панде фрейма данных

#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. Спасибо. Работает хорошо.