Получить средние данные на основе даты, недели, месяца - PullRequest
1 голос
/ 16 февраля 2020

У меня есть набор данных, который включает данные за три года о результатах работы фабричных рабочих. Теперь я хотел бы получить средний результат на основе даты, недели, месяца, например. Проблема в том, что формат даты похож на% d.% M.% Y (день-месяц-год). Мой вопрос заключается в том, как сохранить формат даты без изменений при получении ожидаемого результата.

Мой набор данных похож на это (ежедневно существует много значений.)

date         output 
1.1.2017     261
2.1.2017     152 (Jan.02,2017)
17.1.2017    256
17.1.2017    261
18.1.2017    193
18.1.2017    462
1.2.2017     212 (Feb.1,2017)
3.2.2017     266 (Feb.3,2017)

....


1.3.2018    360

Сообщение об ошибке, которое я получил, выглядит так: данные времени '2017-01-01' не соответствуют формату ' % d.% m.% Y '(совпадение). К вашему сведению, мой код выглядит следующим образом, когда я читаю набор данных

df['date'] = pd.to_datetime(df['date'],format='%d.%m.%Y').dt.date
df.groupby(['date'],as_index=False).mean()

Я пытался решить его, прибегая к поиску различных решений. Но я не могу получить ожидаемый результат. Выходные данные были полностью запутаны между датой и месяцем. Например, 1.2.2017 (Jan.2,2017) обрабатывалось как (Feb1,2017). Как я могу решить это? Спасибо!

1 Ответ

0 голосов
/ 16 февраля 2020

Ваш код выглядит нормально и фактически работает хорошо, по крайней мере, для первых четырех записей данных. Проблема в том, что формат даты не соответствует сообщенной вами ошибке. Как указали другие, решение проблемы с форматом pandas поможет решить проблему, то есть df["date"]=pd.to_datetime(df["date"]). Но я просто чувствую, что это немного сложно или опасно. Я хотел бы порекомендовать вам унифицировать формат даты, используя строковые операции в Python перед любым анализом. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...