Переформатирование и переупорядочивание дат в серии Python Pandas - PullRequest
1 голос
/ 03 августа 2020

У меня есть pandas DataFrame, и я хочу переформатировать И заказать столбец «Диапазон дат». Это строки df.head():

Numeric Index   Origin Movement ID  Origin Display Name Destination Movement ID Destination Display Name    Date Range  Mean Travel Time (Seconds)  Range - Lower Bound Travel Time (Seconds)   Range - Upper Bound Travel Time (Seconds)
0   0   1074    Traffic Zone 02047  28  Traffic Zone 16024  1/4/2016 - 1/4/2016, Every day, Daily Average   2296    1593    3309
1   1   1074    Traffic Zone 02047  29  Traffic Zone 16025  1/4/2016 - 1/4/2016, Every day, Daily Average   2378    1662    3402
2   2   1074    Traffic Zone 02047  35  Traffic Zone 14080  1/4/2016 - 1/4/2016, Every day, Daily Average   1846    1703    2000
3   3   1074    Traffic Zone 02047  43  Traffic Zone 14072  1/4/2016 - 1/4/2016, Every day, Daily Average   1797    1647    1959
4   4   1074    Traffic Zone 02047  48  Traffic Zone 16027  1/4/2016 - 1/4/2016, Every day, Daily Average   2301    1670    3168

Мои df['Date Range'] - это даты со 2 января 2016 года по 31 марта 2020 года, и они имеют следующий формат:

1      1/4/2016 - 1/4/2016, Every day, Daily Average
2      1/4/2016 - 1/4/2016, Every day, Daily Average
3      1/4/2016 - 1/4/2016, Every day, Daily Average
4      1/4/2016 - 1/4/2016, Every day, Daily Average
                           ...                      
542    1/2/2016 - 1/2/2016, Every day, Daily Average
543    1/2/2016 - 1/2/2016, Every day, Daily Average
544    1/2/2016 - 1/2/2016, Every day, Daily Average
545    1/2/2016 - 1/2/2016, Every day, Daily Average
546    1/2/2016 - 1/2/2016, Every day, Daily Average

Как сделать Я преобразовываю «1/2/2016 - 1/2/2016, Ежедневно, Среднесуточное значение» в «2016-01-02» для каждой даты и упорядочиваю их по дате?

Примечание. В строке два даты, и они одинаковы для каждой строки, поэтому я хочу преобразовать их только в одну дату.

1 Ответ

1 голос
/ 04 августа 2020

Вы можете разделить по первому пробелу, выбрать первое значение и преобразовать в datetime с помощью параметра format с помощью to_datetime, при необходимости последним используйте DataFrame.sort_values:

df['Date Range'] = pd.to_datetime(df['Date Range'].str.split().str[0], format='%d/%m/%Y')

df = df.sort_values('Date Range')
...