При сортировке столбцов в кадре данных pandas, которые содержат текст (и, следовательно, имеют тип данных «объект»), работает синтаксис df.sort
и сортирует apple, orange, banana
в правильном порядке. Однако, если я преобразую столбец фруктов в тип данных Categorical
, то попытаюсь отсортировать, это не сработает.
Я хочу отсортировать сначала по столбцу даты и времени, а затем по категориальному столбцу, а затем по некоторым числовым (float/int).
Код (где account
не является категориальным) сортируется по month_date
, который является объектом даты и времени, и account (A-Z)
правильно:
#data['month_name'] = pd.Categorical(data['month_name'],
# categories=data.month_name.unique().tolist())
#data['account'] = pd.Categorical(data['account'],
# categories=data.account.unique().tolist())
column_list = data.columns.values.tolist()
sorted_data = data.sort(["month_date","account"], ascending=True)
display(sorted_data)
Пример:
- Яблоко
- Банан
- Морковь
Код (где account
является категориальным) неправильно сортируется (обратите внимание, что данные pd.categorical больше не закомментированы):
data['month_name'] = pd.Categorical(data['month_name'],
categories=data.month_name.unique().tolist())
data['account'] = pd.Categorical(data['account'],
categories=data.account.unique().tolist())
column_list = data.columns.values.tolist()
sorted_data = data.sort(["month_date","account"], ascending=True)
display(sorted_data)
Пример
- Яблоко
- Морковь
- Банан