Я хотел бы отсортировать кадр данных Pandas по столбцу, содержащему представление дня недели в ISO-8601.
df = pd.DataFrame([
{ 'day': 'Mon', 'value': 13 },
{ 'day': 'Wed', 'value': 24 },
{ 'day': 'Fri', 'value': 52 },
{ 'day': 'Sun', 'value': 56 },
{ 'day': 'Sat', 'value': 42 },
{ 'day': 'Thu', 'value': 84 },
{ 'day': 'Tue', 'value': 59 }
])
df['dt_'] = pd.to_datetime(df['day'], format='%a', errors='coerce')
df = df.sort_values('dt_')
>>> print(df)
day value dt_
0 Mon 13 1900-01-01
1 Wed 24 1900-01-01
2 Fri 52 1900-01-01
3 Sun 56 1900-01-01
4 Sat 42 1900-01-01
5 Thu 84 1900-01-01
6 Tue 59 1900-01-01
Очевидно, что ожидаемое поведение будет иметь сортировку данных по Mon Tue Wed Thu Fri Sat Sun
. Согласно http://strftime.org/, этот формат %a
представляется правильным.
Помимо хака, который будет заключаться в том, чтобы иметь Dict day -> number
, есть ли более чистый способ достичь этого?
Здесь приведен пример с сокращенным днем недели (Dy
ISO-8601), но в идеале я хотел бы найти общее решение для любого ввода ISO-8601.