Вносить условные изменения в многочисленные даты

#python #excel #pandas #dataframe

#python #excel #панды #фрейм данных

Вопрос:

Я уверен, что на это действительно легко ответить, но я только начал использовать Pandas.

В моем файле Excel есть столбец с именем «День» и столбец даты / времени с именем «Дата».

Я хочу обновить свой столбец «День» соответствующим днем МНОГОЧИСЛЕННЫХ дат из столбца «Дата».

Пока я использую этот код, показанный ниже, чтобы изменить дату / время на просто дату

 df['Date'] = pd.to_datetime(df.Date).dt.strftime('%d/%m/%Y')
  

А затем используйте этот код, чтобы изменить столбец «День» на вторник

 df.loc[df['Date'] == '02/02/2018', 'Day'] = '2'
  

(2 означает 2-й день недели)

Это отлично работает. Проблема в том, что мой лист Excel содержит более 500000 строк данных и множество дат. Поэтому мне нужен этот код для работы с многочисленными датами (точнее, с 4 разными датами)

Например; Я пробовал этот код;

 df.loc[df['Date'] == '02/02/2018'   '09/02/2018'   '16/02/2018'   '23/02/2018', 'Day'] = '2'
  

Который не выдает мне ошибку, но не изменяет дату на 2. Я знаю, что мог бы просто использовать одну и ту же строку кода несколько раз и каждый раз менять дату … но должен быть способ сделать это так, как я объяснил? Помощь была бы весьма признательна 🙂

Ответ №1:

2/2/2018 это пятница, поэтому я не знаю, что означает «2-й день недели». Ваша неделя начинается в четверг?

Поскольку вы уже преобразовали day в Timestamp, используйте средство dt доступа:

 df['Day'] = df['Date'].dt.dayofweek()
  

Понедельник равен 0, а воскресенье = 6. Манипулируйте этим по мере необходимости.

Ответ №2:

Если все правильно, вы хотите изменить Day столбец только для нескольких Dates , верно? Если это так, вы можете просто включить эти даты в отдельный список и выполнить

 my_dates = ['02/02/2018', '09/02/2018', '16/02/2018', '23/02/2018']
df.loc[df['Date'].isin(my_dates), 'Day'] = '2'
  

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

1. Извините, моя ошибка, да, вы правы, у меня все работает, спасибо