#python #pandas #date
Вопрос:
Я получил информацию из Твиттера и хотел бы отсортировать даты. Однако некоторые даты неправильно отсортированы, переключаясь с даты на месяц и наоборот.Что-то не так с кодом или исходными данными? Однако мои исходные данные выглядели нормально. Кто-нибудь может помочь?
Необработанные данные
мой код
df05 = pd.read_csv("01_clean_2020-07.csv")
df05['date'] = pd.to_datetime(df05['date'], dayfirst=True)
df05_count = df05['date'].dt.date.value_counts().sort_index().reset_index()
df05_count.columns = ['date','count']
выход
date count
0 2020-03-07 2 **wrong
1 2020-04-07 1 **wrong
2 2020-07-13 5
3 2020-07-15 1
4 2020-07-16 1
5 2020-07-20 1
6 2020-07-21 7
7 2020-07-22 3
8 2020-07-23 3
9 2020-07-24 3
10 2020-07-25 2
11 2020-07-26 1
12 2020-07-28 1
13 2020-07-29 1
14 2020-07-30 1
15 2020-07-31 2
16 2020-09-07 1 *** wrong
17 2020-11-07 6 *** wrong
18 2020-12-07 3 *** wrong
Комментарии:
1. Как
7/16/2020
(ваша первая запись) может быть первым днем? Что такое 16-й месяц? Никогда о таком не слышал…
Ответ №1:
Здесь кажется, что день не первый, а месяц, так что уберите dayfirst=True
:
df05['date'] = pd.to_datetime(df05['date'])
Также можно указать формат:
df05['date'] = pd.to_datetime(df05['date'], format='%m/%d/%Y %H:%M')
Комментарии:
1. Я все еще не знаком с пандами. Большое вам спасибо за ваш комментарий. Это работает.
2. @tassaneel — Да, проблема в том, работают ли входные данные
3. @tassaneel — кажется, существуют смешанные форматы
MM/DD/YYYY
иDD/MM/YYYY
. Панды, работающие здесь, как — конвертируйте в месяцы, если это возможно (MM/DD/YYYY
), если нет, поменяйте их местами (DD/MM/YYYY
)4. @tassaneel — Это означает, что если
12/7/2020
— и использоватьdf05['date'] = pd.to_datetime(df05['date'])
— то 12-это месяц. панды не могут думать так, как будто все остальные месяцы равны 7, поэтому замените один месяц днем.5. @tassaneel —
12/7/2020
и если использоватьdf05['date'] = pd.to_datetime(df05['date'], dayfirst=True)
, то 7 — это месяц, но проблема для всех других дат с первым номером l;например, 13 —7/3/2020
— месяц равен 3, потому что 7 июля. Но если7/13/2020
месяц не может быть 13, поэтому панды меняют его местами, и 7 июля.