Как добавить ведущие нули в столбцах месяца в Pandas?

#python #pandas #for-loop #leading-zero

#python #pandas #для цикла #ведущий ноль

Вопрос:

Я просмотрел множество других вопросов, но не нашел ни одного, который бы вполне подходил.

Допустим, у меня есть фрейм данных, df:

 Name     Month
Bob      5
Jim      7
Mary     12
  

Я пытаюсь написать цикл for, который добавлял бы начальный ноль к месяцам с одной цифрой (и просто печатал другие месяцы как есть), а затем я могу перезаписать столбец списком.

Вот что у меня есть

 list={}
for i in df['Month']:
      if len(df['Month'][i]) < 2:
          print("{:02}".format(i))
      else:
          print(i)
print(list)
df['Month']=list
  

Подобный код выдает мне ошибку:

 TypeError: object of type 'numpy.int64' has no len()
  

Я не совсем уверен, где это устранить или куда идти дальше. Спасибо!

Комментарии:

1. Вы смешиваете 2 способа выполнения циклов: — для i в df [‘Месяц’] будет вычисляться до 5, затем 7, затем 12. — вероятно, вы имели в виду сделать «для i в диапазоне (0, len (df[‘Месяц’]

2. К сожалению, для этого мне приходится использовать цикл (это для назначения), поэтому я не могу использовать обходной путь с zfill. Спасибо, троллолдем, я рассмотрю возможность изменения этой части.

Ответ №1:

Поехали (без цикла):

 df["Month"] = df.Month.map("{:02}".format)
  

Комментарии:

1. Это намного элегантнее, чем цикл 🙂

Ответ №2:

Вы можете попробовать это:

 df = pd.read_csv('file.csv', converters={'Month': '{:0>2}'.format}).astype('str')
print(df)
  

Ответ №3:

 df['Month'].astype(str).str.zfill(2)
  

Ответ №4:

Используйте zfill для этого:

 df['Month'] = df['Month'].astype(str).str.zfill(2)
print(df)

   Name Month
0   Bob    05
1   Jim    07
2  Mary    12