#python #pandas
#python #pandas
Вопрос:
Это часто встречается, но предлагаемые ответы, похоже, не помогают.
У меня есть столбец datetime, который я пытаюсь преобразовать в формат d / m / y h: m.
Я использую следующий код:
change_details.loc[:, 'Planned Start Date'] = change_details['Planned Start Date'].dt.strftime('%d %m, %Y %h:%m')
Исходя из предыдущих ответов, это должен быть правильный способ предотвратить это предупреждение, но я все еще получаю его:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
Я также пробовал суффикс с помощью .copy(), но безрезультатно!
Есть идеи?
Комментарии:
1. Не могли бы вы попробовать поменять способ индексации?
loc
справа и квадратные скобки справа. Просто догадка2. Нет, та же ошибка! Используя change_details[‘Запланированная дата начала’] = change_details.loc[:, ‘Запланированная дата начала’].dt.strftime(‘%d %m, %Y %h:%m’)
Ответ №1:
Итак, я нашел свою проблему,
это было ранее в коде, где я изначально вырезал change_details из другого фрейма данных.
change_details = gdp_sched_today[[start_date', 'end_date']]
change_details.columns = ['Planned Start Date', 'Planned End Date']
change_details['Planned Start Date'] = change_details['Planned Start Date'].dt.strftime('%d/%m/%Y %h:%M')
change_details['Planned End Date'] = change_details['Planned End Date'].dt.strftime('%d/%m/%Y %H:%M')
Я смог решить эту проблему, добавив .copy() к этой первой строке, убедившись, что Pandas знает, что я намеревался сделать его копией, а не представлением.
change_details = gdp_sched_today[[start_date', 'end_date']].copy()
change_details.columns = ['Planned Start Date', 'Planned End Date']
change_details['Planned Start Date'] = change_details['Planned Start Date'].dt.strftime('%d/%m/%Y %h:%M')
change_details['Planned End Date'] = change_details['Planned End Date'].dt.strftime('%d/%m/%Y %H:%M')
конечно, было бы неплохо, если бы предупреждение было немного понятнее о том, что его вызывает 🙂