Правильный синтакис

Подскажите правильный синтаксис. Нужно в новый столбец new добавить расчитаное значение для first и second столбца с 2 знаками после запятой. Как я указал ниже выскакивает ошибка. "f-string: unmatched '['"

df['new'] = f'{(df['first'] / df['second']):.2}'

Ответы (1 шт):

Автор решения: insolor

Исходная ошибка возникает из-за того, внутри строки используются одинарные кавычки, которой ограничена сама же строка, получается, что f'{(df['first'] / df['second']):.2}' эквивалентно таким частям: f'{(df[' first '] / df[' second ']):.2}', падает на первой же части, являющейся f-строкой, внутри которой не закрыты все открытые скобки.

Отформатировать колонку целиком через f-строку не получится. Нужно сначала получить значения для новой колонки через df['first'] / df['second'], потом каждый элемент отформатировать, после этого уже добавить как новую колонку:

df['new'] = (df['first'] / df['second']).apply("{:.2}".format) 

Аналогично через f-строку, применяемую через лямбду к каждому элементу колонки в отдельности:

df['new'] = (df['first'] / df['second']).apply(lambda x: f'{x:.2}')
→ Ссылка