Gipp

Пользователь

Регистрация: 11.10.2017

Сообщения: 518

Рейтинг: 144

Gipp

Регистрация: 11.10.2017

Сообщения: 518

Рейтинг: 144

скриншот

VIfQR6LETnuFAM87DZHusQ.png

нужно оставить в таблице только первое и последнее время для каждого key, все промежуточные значения и если время указано только 1 надо удалить. Как быстрее всего это можно сделать?

 

оспа этого времени

Пользователь

Регистрация: 20.08.2018

Сообщения: 1374

Рейтинг: 317

оспа этого времени

Регистрация: 20.08.2018

Сообщения: 1374

Рейтинг: 317

число записей - 2 / число потоков.

в потоках удаляешь отрезок

 

?

 

acewasel

Пользователь

Регистрация: 31.07.2015

Сообщения: 1605

Рейтинг: 992

acewasel

Регистрация: 31.07.2015

Сообщения: 1605

Рейтинг: 992

Ну крутишь выведенное через for i in data_temp.head (или че там у тебя выводится), це вроде список списков.

Запоминаешь индекс первого вреения, запоминаешь индекс нового времени и так крутишь, пока новый кей не появится  (они у тебя уже рассортированы, поэтому можно не париться). Загугли команду pop в пайтоне. И удаляешь ненужные, так как ты знаешь индексы нужных тебе кеев, удаляешь промежуточные через поп. Продолжаешь.

Ну суть ты понял

оспа этого времени

Пользователь

Регистрация: 20.08.2018

Сообщения: 1374

Рейтинг: 317

оспа этого времени

Регистрация: 20.08.2018

Сообщения: 1374

Рейтинг: 317

acewasel сказал(а):

Ну крутишь выведенное через for i in data_temp.head (или че там у тебя выводится), це вроде список списков.

Запоминаешь индекс первого вреения, запоминаешь индекс нового времени и так крутишь, пока новый кей не появится  (они у тебя уже рассортированы, поэтому можно не париться). Загугли команду pop в пайтоне. И удаляешь ненужные, так как ты знаешь индексы нужных тебе кеев, удаляешь промежуточные через поп. Продолжаешь.

Ну суть ты понял

Нажмите, чтобы раскрыть...

ну человек явно не спрашивает как удалить элементы кроме 0 и len()

Gipp

Пользователь

Регистрация: 11.10.2017

Сообщения: 518

Рейтинг: 144

Gipp

Регистрация: 11.10.2017

Сообщения: 518

Рейтинг: 144

оспа этого времени сказал(а):

число записей - 2 / число потоков.

в потоках удаляешь отрезок

 

?

 

Нажмите, чтобы раскрыть...

Скрин

cVHQ_mGpSOCfcBYC4NiH-g.png

  в ссылке инфа по таблице, 15к+ строк 3+к key. удалить надо что бы оставалось 2 значения key  1 1 2 2 3 3 итд, с первым и последним временем.

я в этой теме только разбираюсь, так что сори если туплю)

lexani4321

Пользователь

Регистрация: 28.03.2018

Сообщения: 13019

Рейтинг: 4063

lexani4321

Регистрация: 28.03.2018

Сообщения: 13019

Рейтинг: 4063

acewasel сказал(а):

Ну крутишь выведенное через for i in data_temp.head (или че там у тебя выводится), це вроде список списков.

Запоминаешь индекс первого вреения, запоминаешь индекс нового времени и так крутишь, пока новый кей не появится  (они у тебя уже рассортированы, поэтому можно не париться). Загугли команду pop в пайтоне. И удаляешь ненужные, так как ты знаешь индексы нужных тебе кеев, удаляешь промежуточные через поп. Продолжаешь.

Ну суть ты понял

Нажмите, чтобы раскрыть...

Если ему надо только 0 и последний элемент оставить в новый список то легче наверное просто будет создать new = [old[0], old[len(old)-1]]. Если ему надо вырезать всё из списка то легче наверное будет сделать del old[1:len(old)-1].

Но главная проблема в том что кажется ему не это надо.

Samii4erniiBlekhol

Пользователь

Регистрация: 10.08.2015

Сообщения: 1385

Рейтинг: 425

Samii4erniiBlekhol

Регистрация: 10.08.2015

Сообщения: 1385

Рейтинг: 425

Через dataframe работаешь? Тебе человек идею уже расписал. Еслиу тебя значения уже отсортированны по ключу и дате, то сканируешь всю таблицу и сохраняешь индексы первого и последнего значения у каждого ключа. Через drop удалишь промежуточные.

ScienceT

Пользователь

Регистрация: 17.05.2019

Сообщения: 146

Рейтинг: 36

ScienceT

Регистрация: 17.05.2019

Сообщения: 146

Рейтинг: 36

Input

b2Ey8d6.png

Output

Zz8ddu6.png

 

result_df = d2_df.loc&d2_df.groupby('key');'measurement_time'].agg(;'idxmin','idxmax']).stack()].drop_duplicates()

result_df = result_df.groupby('key').filter(lambda x: x.shape[0] != 1)

Заменить & в первом выражении (после groupby) на квадратную открывающую скобку. Сайт ломает конструкцию.

Gipp

Пользователь

Регистрация: 11.10.2017

Сообщения: 518

Рейтинг: 144

Gipp

Регистрация: 11.10.2017

Сообщения: 518

Рейтинг: 144

Поднятие темы