Я использую питон 3.
У меня есть столбец десятичных чисел под названием «CIPCODE» в фрейме данных под названием «данные». Целая часть этого столбца находится в диапазоне от 1 до 60.
Я хочу отформатировать его так, чтобы:
первое условие: если значение целой части от 1 до 9 (включительно), то перед числом добавить ноль, например -
4.2021 становится 04.2021
25,3434 остается 25,3434
поэтому в основном у нас всегда должно быть 2 цифры перед десятичной запятой.
второе условие: после запятой всегда должно быть 4 цифры, например -
51.201 становится 51.2010
34,5555 остается 34,5555
Я пробовал следующее:
data['CIPCODE'] = data['CIPCODE'].astype(str).str.zfill(7)
но это только добавляет нули к части до десятичной точки.






Используйте форматирование Python для пользовательской строки:
data = pd.DataFrame({'CIPCODE':[4.2021,25.3434,51.201,34.5555]})
data['CIPCODE'] = data['CIPCODE'].apply('{:07.4f}'.format)
print (data)
CIPCODE
0 04.2021
1 25.3434
2 51.2010
3 34.5555
{:07.4f}
↑ ↑
| |
# digits to pad | | # of decimal places to display
Пожалуйста, добавьте пояснения к вашему коду. Только код не является ответом.
Возможно, это не самый быстрый способ, но вы можете сделать это, поместив эту логику в функцию и применив ее к фрейму данных.
Пример:
import pandas as pd
from collections import deque
df = pd.DataFrame({'CIPCODE': [4.2021, 25.3434, 51.201, 34.5555]})
def format_cipcode(code):
d = deque(code)
if d[1] == '.':
d.appendleft('0')
if d[-4] == '.':
d.append('0')
return ''.join(d)
df['CIPCODE'] = df['CIPCODE'].astype(str).apply(format_cipcode)
print(df['CIPCODE'])
Выход:
Name: CIPCODE, dtype: object
0 04.2021
1 25.3434
2 51.2010
3 34.5555
В этом случае я использовал двухстороннюю очередь, которая представляет собой своего рода список, который вы можете добавлять слева и справа. Для левой стороны проверьте, является ли второй символ в строке расширением . и добавьте 0, если это так. Для правой стороны проверьте, является ли четвертый символ справа расширением . и если да, добавьте 0
Вы можете напрямую использовать форматирование Python (07.4f, что означает 4 цифры после запятой и дополнено до 7 символов):
df['formatted'] = df['CIPCODE'].apply(lambda x: f'{x:07.4f}')
Выход:
CIPCODE formatted
0 4.2021 04.2021
1 25.3434 25.3434
2 12.3000 12.3000
Конечно бьет мой путь!
Добро пожаловать в SO. Пожалуйста, старайтесь использовать правильные заглавные буквы, например. в начале вашего заголовка, предложения или слова «Я». Это было бы мягко по отношению к вашим читателям. Пожалуйста, прочитайте Как спросить и Минимально воспроизводимый пример. Затем обновите свой вопрос кодом, чтобы показать нам, что вы уже пробовали.