2016-09-12 4 views
1

У меня есть таблица Excel со следующими даннымиСортировки (неструктурированные) даты в панде DataFrame

Пожалуйста, обратите внимание, что у меня есть один столбец, где дата, месяц и время приводятся в следующем формате.

Я хочу отсортировать строки по дате и времени (например, январь-1-1,0, январь-2-2,0, январь-1-3,0) и найти способы сделать в Python Pandas DataFrame. (даты на французском языке)

Просьба предоставить ваши предложения.

Date-heure 

Vendredi 03 novembre 10.0 
Vendredi 03 novembre 5.0 
Vendredi 03 novembre 18.0 
Vendredi 03 novembre 24.0 
Samedi 04 novembre 1.0 
Samedi 04 novembre 2.0 
Samedi 04 novembre 4.0 
Samedi 04 novembre 5.0 
Samedi 04 novembre 7.0 
Samedi 04 novembre 13.0 
Samedi 04 novembre 21.0 
Vendredi 20 avril 1.0 
Dimanche 05 novembre 2.0 
Dimanche 05 novembre 8.0 

Благодарим за быстрый ответ. В моем excel ячейка имеет Date. И когда я загружен как DataFrame, он показывает мне, как тип данных

pandas.core.series.Series 

И я просто не мог разобраться. Также обратите внимание, что у меня есть время и в той же самой ячейке.

Представляем вам все типы dtypes здесь, как показано ниже;

Date_heure              object 
Heure               int64 
Industrie (MW)             int64 
Tertiaire Chauffage (MW)           int64 
Tertiaire Climatisation (MW)          int64 
Tertiaire Autres usages (MW)          int64 
Résidentiel Chauffage (MW)          int64 
Résidentiel Eau chaude (MW)          int64 
dtype: object 

спасибо.

+0

Можете ли вы показать то, что происходит, когда вы загружаете это в ДФ? 'Dtype' следует правильно обманывать, используя' pd.read_excel' в 'datetime', поэтому его следует сортировать, если только это не строки. – EdChum

+0

Благодарим вас за быстрый ответ. В моем excel ячейка имеет Date. И когда я загружался как DataFrame, он показывает мне тип данных, поскольку pandas.core.series.Series – Mari

+0

редактирует ваш вопрос с помощью новой информации, что показывает 'df.dtypes'? – EdChum

ответ

0

OK вы можете использовать dateparser разобрать ваши строки, а затем построить TimedeltaIndex добавить час компонент:

In [36]: 
import dateparser 
t="""Date-heure 
Vendredi 03 novembre 10.0 
Vendredi 03 novembre 5.0 
Vendredi 03 novembre 18.0 
Vendredi 03 novembre 24.0 
Samedi 04 novembre 1.0 
Samedi 04 novembre 2.0 
Samedi 04 novembre 4.0 
Samedi 04 novembre 5.0 
Samedi 04 novembre 7.0 
Samedi 04 novembre 13.0 
Samedi 04 novembre 21.0 
Vendredi 20 avril 1.0 
Dimanche 05 novembre 2.0 
Dimanche 05 novembre 8.0""" 
df = pd.read_csv(io.StringIO(t)) 
df['date-time'] = df['Date-heure'].str.split().str[:-1].str.join(' ').apply(dateparser.parse) + pd.TimedeltaIndex((df['Date-heure'].str.rsplit().str[-1]).astype(float), unit='H') 
df 

Out[36]: 
        Date-heure   date-time 
0 Vendredi 03 novembre 10.0 2016-11-03 10:00:00 
1 Vendredi 03 novembre 5.0 2016-11-03 05:00:00 
2 Vendredi 03 novembre 18.0 2016-11-03 18:00:00 
3 Vendredi 03 novembre 24.0 2016-11-04 00:00:00 
4  Samedi 04 novembre 1.0 2016-11-04 01:00:00 
5  Samedi 04 novembre 2.0 2016-11-04 02:00:00 
6  Samedi 04 novembre 4.0 2016-11-04 04:00:00 
7  Samedi 04 novembre 5.0 2016-11-04 05:00:00 
8  Samedi 04 novembre 7.0 2016-11-04 07:00:00 
9  Samedi 04 novembre 13.0 2016-11-04 13:00:00 
10 Samedi 04 novembre 21.0 2016-11-04 21:00:00 
11  Vendredi 20 avril 1.0 2016-04-20 01:00:00 
12 Dimanche 05 novembre 2.0 2016-11-05 02:00:00 
13 Dimanche 05 novembre 8.0 2016-11-05 08:00:00 

Так что:

df['Date-heure'].str.split().str[:-1].str.join(' ').apply(dateparser.parse) + pd.TimedeltaIndex((df['Date-heure'].str.rsplit().str[-1]).astype(float), unit='H') 

это линия, которая должна заинтересовать, здесь Я звоню apply на ваших строках до applydateparser.parse, но это даст вам только дату, так как она не понимает значение поплавка, поэтому я затем rsplit строку, чтобы получить час и бросить на f loat и затем построить timedeltaindex.

После чего я могу использовать sort_values для сортировки ДФ:

In [37]: 
df.sort_values('date-time') 

Out[37]: 
        Date-heure   date-time 
11  Vendredi 20 avril 1.0 2016-04-20 01:00:00 
1 Vendredi 03 novembre 5.0 2016-11-03 05:00:00 
0 Vendredi 03 novembre 10.0 2016-11-03 10:00:00 
2 Vendredi 03 novembre 18.0 2016-11-03 18:00:00 
3 Vendredi 03 novembre 24.0 2016-11-04 00:00:00 
4  Samedi 04 novembre 1.0 2016-11-04 01:00:00 
5  Samedi 04 novembre 2.0 2016-11-04 02:00:00 
6  Samedi 04 novembre 4.0 2016-11-04 04:00:00 
7  Samedi 04 novembre 5.0 2016-11-04 05:00:00 
8  Samedi 04 novembre 7.0 2016-11-04 07:00:00 
9  Samedi 04 novembre 13.0 2016-11-04 13:00:00 
10 Samedi 04 novembre 21.0 2016-11-04 21:00:00 
12 Dimanche 05 novembre 2.0 2016-11-05 02:00:00 
13 Dimanche 05 novembre 8.0 2016-11-05 08:00:00 
+0

Dear EdChum, Большое вам спасибо за ваши усилия, пытаясь помочь мне. Теперь я могу сортировать данные так, как я хотел. Еще раз спасибо за ваше время и усилия. Они помогли мне вовремя. – Mari

Смежные вопросы