#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
Я знаю, что это сложно, но спасибо, что уделили время ..!