У меня есть диапазон столбцов, имена столбцов которых представляют собой даты, которые увеличиваются на основе сегодняшней даты в течение следующих 30 дней.
В каждый столбец я пытаюсь вставить скользящий список на основе линии команды.
Следующий сценарий дает желаемый результат:
Как показано на рисунке ниже:
Правильный вывод
Это работает нормально, и я получаю желаемое вывод, если я напрямую ссылаюсь на имена столбцов, но поскольку имена этих столбцов меняются каждый день, я хотел ссылаться на них по индексу, а не по имени, поэтому мне не нужно обновлять строку кода каждый день. Вместо этого я попытался ссылаться на них по индексу, используя iLoc, чтобы мне не приходилось менять переменную каждый день, как показано ниже:
Если вышеуказанное можно решить, чтобы я мог вставлять на основе индекса столбца, а не имени столбца, я бы хотел, чтобы сценарий был улучшен, чтобы шаблон повторялся до тех пор, пока столбцов не останется.
p>
Итак, окончательный результат выглядит следующим образом:
Окончательный результат
У меня есть диапазон столбцов, имена столбцов которых представляют собой даты, которые увеличиваются на основе сегодняшней даты в течение следующих 30 дней. В каждый столбец я пытаюсь вставить скользящий список на основе линии команды. Следующий сценарий дает желаемый результат: [code]start_date = date.today() end_date = start_date + timedelta(days=31)
new_column_names = ['colleague', 'team'] + [(start_date + timedelta(days=i)).strftime('%d/%m/%Y') for i in range(len(roster.columns) - 2)]
roster.head(16) [/code] Как показано на рисунке ниже: Правильный вывод Это работает нормально, и я получаю желаемое вывод, если я напрямую ссылаюсь на имена столбцов, но поскольку имена этих столбцов меняются каждый день, я хотел ссылаться на них по индексу, а не по имени, поэтому мне не нужно обновлять строку кода каждый день. Вместо этого я попытался ссылаться на них по индексу, используя iLoc, чтобы мне не приходилось менять переменную каждый день, как показано ниже: [code]columns_to_update = roster.iloc[:, 2:10] row_condition = (roster['team'] == 1) roster.loc[row_condition, columns_to_update] = team1 [/code] но выдает следующую ошибку: [code]KeyError: "None of \[Index(\[('0', '3', '/', '1', '2', '/', '2', '0', '2', '4'),\\n ('0', '4', '/', '1', '2', '/', '2', '0', '2', '4'),\\n ('0', '5', '/', '1', '2', '/', '2', '0', '2', '4'),\\n ('0', '6', '/', '1', '2', '/', '2', '0', '2', '4'),\\n ('0', '7', '/', '1', '2', '/', '2', '0', '2', '4'),\\n ('0', '8', '/', '1', '2', '/', '2', '0', '2', '4'),\\n ('0', '9', '/', '1', '2', '/', '2', '0', '2', '4'),\\n ('1', '0', '/', '1', '2', '/', '2', '0', '2', '4')\],\\n dtype='object')\] are in the \[columns\]" [/code] Затем я попытался переместить соглашение об изменении имени позже в сценарии после операции обновления столбцов, но возникла следующая ошибка [code]TypeError "'int' object is not iterable" [/code] Если вышеуказанное можно решить, чтобы я мог вставлять на основе индекса столбца, а не имени столбца, я бы хотел, чтобы сценарий был улучшен, чтобы шаблон повторялся до тех пор, пока столбцов не останется. p> Итак, окончательный результат выглядит следующим образом: Окончательный результат