Словарь сортировки фреймов данных, имеющих временные метки в качестве значений

#python #python-3.x #pandas #dataframe #sorting

#python #python-3.x #pandas #фрейм данных #сортировка

Вопрос:

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

Мне нужно отсортировать словарь на основе первого значения столбца ВРЕМЕНИ всех фреймов данных, поэтому, если этот рисунок является примером, после сортировки я получаю ключи в порядке 1,2,0 на основе временных меток. После назначения я удаляю этот фрагмент этого конкретного фрейма данных, и мне нужно отсортировать словарь. Вот как выглядит мой фрейм данных:

 [(0,
                             TIME
  CheckPoints                    
  DSG         2020-11-30 10:00:28
  SHD         2020-11-30 10:06:15
  SLAP        2020-11-30 10:10:16
  KG          2020-11-30 10:16:07
  RI          2020-11-30 10:42:18
  
  [76 rows x 1 columns]),
 (1,
                             TIME
  CheckPoints                    
  DEPOT       2020-11-30 05:12:00
  SLAP        2020-11-30 05:27:00
  SHD         2020-11-30 05:32:45
  DSG         2020-11-30 05:38:55
  DSG         2020-11-30 05:40:00
  
  [102 rows x 1 columns]),
 (2,
                             TIME
  CheckPoints                    
  DEPOT       2020-11-30 05:30:01
  SLAP        2020-11-30 05:45:01
  SHD         2020-11-30 05:49:23
  DSG         2020-11-30 05:55:33
  ATHA        2020-11-30 06:07:39
 

РЕДАКТИРОВАТЬ: — Добавление фрагмента кода словаря, чтобы его можно было скопировать, вставить и использовать в качестве примера..Спасибо ..!

Я использую sorted(rail.items()) , но я знаю, что это будет работать не так, как ожидалось. Может кто-нибудь мне помочь ..!

Комментарии:

1. Можете ли вы опубликовать свой фрейм данных в виде фрагмента кода, а не изображения? Упрощает копирование и вставку

2. Готово ..! Это огромные данные, но незначительные данные для работы, которые я предоставил.. Спасибо, что уделили время ..!

3. каков ожидаемый результат для вашего ввода?

4. Таким образом, O / P должен быть первым фреймом данных key1[05:12:00], за которым следует фрейм данных key2[05:30: 01], а затем фрейм данных key0 [10:00:28], когда я перебираю словарь

Ответ №1:

Вам нужно передать «ключ» функции сортировки — под ключом здесь мы подразумеваем функцию, которая возвращает то, что нужно отсортировать — в вашем случае то, что нужно отсортировать, — это первый элемент dataframe

 sorted(d, key=lambda x: d[x].reset_index().loc[0, 'TIME'])   
 

Ответ №2:

@Mortz Спасибо, приятель… В качестве обходного пути я попробовал это и работал в соответствии с требованиями .. сложный, но как-то сработал..

 for dum in d.keys():
        if d[dum].size != 0:
            temp.append(d[dum].iloc[0,0])  
    temp1 = sorted(temp)
 

А затем сопоставьте первый элемент, например:

 for item in temp1:
        for x in d.keys():
            if d[x].size != 0:
                if d[x].iloc[0,0]==item:
                    break
                else :
                    continue
 

Я знаю, что это сложно, но спасибо, что уделили время ..!