Как добавить ведущие 0 в разные значения в одном столбце в пандах? - PullRequest
0 голосов
/ 02 июня 2018

У меня есть столбец со значениями длины 5, 6, 8 или 9. Столбец должен просто иметь значения длины 6 или 9. Мне нужно добавить начальные 0, если значение имеет длину 5 или 8.

Существует еще один столбец, в котором можно указать, должно ли значение быть 6 или 9 цифрами (индикатор).Значение индикатора «Красный» означает 6 цифр, а индикатор «Зеленый» означает 9 цифр.

df['digits'] = df[df['indicator'] == 'red']['digits'].apply(lambda x: "{:006d}".format(x))
df['digits'] = df[df['indicator'] == 'green']['digits'].apply(lambda x: "{:009d}".format(x))


id    indicator     digits
0     red           54324
1     red           654345
2     green         533345678
3     green         56438594

ожидаемый результат:

id    indicator     digits
0     red           054324  # 0 added to this value
1     red           654345
2     green         533345678
3     green         056438594 # 0 added to this value

Я получаю ошибку ValueError: Unknown format code 'd' for object of type 'float'.Есть идеи почему?Что я пропустил?

1 Ответ

0 голосов
/ 02 июня 2018

В сообщении об ошибке указывается тип столбца digits float, вам нужно изменить его на int.

Кроме того, lambda x: "{:006d}".format(x) это просто "{:006d}".format:

df['digits'] = df[df['indicator'] == 'red']['digits'].astype(int).apply("{:006d}".format)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...