Сортировать порядок кадров данных в списке кадров данных на основе значения в каждом кадре данных

У меня есть список фреймов данных, и я хочу отсортировать порядок их расположения в списке.

Каждый фрейм данных имеет такую ​​же структуру, как показано ниже.

df1 = pd.DataFrame.from_dict({'Ch1': {0: -28, 1: -36, 2: -39, 3: -16}, 'Ch2': {0: 543, 1: 547, 2: 559, 3: 561}, 'Ch3': {0: -126, 1: -131, 2: -147, 3: -149}, 'time': {0: '2022-02-10 16.37.25.502', 1: '2022-02-10 16.37.25.502', 2: '2022-02-10 16.37.25.502', 3: '2022-02-10 16.37.25.502'}})
df2 = pd.DataFrame.from_dict({'Ch1': {0: 81, 1: 70, 2: 70, 3: 75}, 'Ch2': {0: 570, 1: 559, 2: 554, 3: 565}, 'Ch3': {0: -103, 1: -120, 2: -131, 3: -122}, 'time': {0: '2022-02-11 05.29.28.116', 1: '2022-02-11 05.29.28.116', 2: '2022-02-11 05.29.28.116', 3: '2022-02-11 05.29.28.116'}})
df3 = pd.DataFrame.from_dict({'Ch1': {0: -887, 1: -887, 2: -890, 3: -898}, 'Ch2': {0: 1307, 1: 1292, 2: 1301, 3: 1307}, 'Ch3': {0: 59, 1: 61, 2: 57, 3: 55}, 'time': {0: '2022-02-08 01.12.54.578', 1: '2022-02-08 01.12.54.578', 2: '2022-02-08 01.12.54.578', 3: '2022-02-08 01.12.54.578'}})

df_list = [df1,df2,df3]

значения в столбце «время» не меняются в каждой строке в одном и том же фрейме данных.

Я хочу, чтобы кадры данных в списке были отсортированы по времени (с первого по последний), чтобы дальнейшая обработка могла совпадать с другими данными.

моя попытка до сих пор.


for i in df_list:
    b = pd.to_datetime(i['time'].iloc[0]) #grab the first cell that contains the time stamp
    b = b.sort_values(by('time'))

возвращает следующую ошибку ValueError: («Неизвестный формат строки:», «2022-02-05 08.03.09.794»)

Я ожидаю, что кадры данных появятся в списке, где df3 будет первым, df1, вторым и df2 последним. У меня идет столбец времени, и его нужно удалить для других операций, поэтому я бы хотел, чтобы они уже были отсортированы во временном порядке.

Любые альтернативные подходы с предложением помощи приветствуются

Можете ли вы предоставить ожидаемый результат?

mozway 09.04.2022 05:17

Логика непонятна, если у вас уникальные даты, зачем сортировать?

mozway 09.04.2022 05:31
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
2
2
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите отсортировать строки каждого фрейма данных, вам нужно указать точный формат даты и времени, и вы должны отсортировать на месте:

for d in df_list:
    d['time'] = pd.to_datetime(d['time'], format='%Y-%m-%d %H.%M.%S.%f')
    d.sort_values(by='time', inplace=True)

Или, если вы хотите отсортировать кадры данных в списке, который совершенно другой, используйте:

df_list.sort(key=lambda d: d['time'].iloc[0])

Вы должны иметь возможность сортировать, используя строку из-за вашего конкретного формата (при условии, что ГГГГ-ММ-ДД).

Чтобы обеспечить сортировку по дате и времени (например, если формат был ММ-ДД-ГГГГ):

df_list.sort(key=lambda d: pd.to_datetime(d['time'].iloc[0], format='%Y-%m-%d %H.%M.%S.%f'))

Другие вопросы по теме