Полярное условное слияние строкPython

Программы на Python
Ответить
Anonymous
 Полярное условное слияние строк

Сообщение Anonymous »

У меня есть некоторые данные о времени, которые я хочу объединить, если два интервала достаточно близки (и тип одинаковый), в настоящее время я делаю что-то. вот так:
Примечание: time_start, time_end — это дата и время, введите категориальную строку

Код: Выделить всё

buffer = dt.timedelta(minutes=15)
_temp_df = (
data.sort("time_start").select([
pl.col("*"),
((pl.col("time_start").shift(-1)) - pl.col("time_end")).fill_null(0).apply(lambda x: (dt.timedelta(seconds=x // 1000))).alias("offset"),
pl.col("type").shift(-1).alias("type_next")
]).select([
pl.col("time_start"), pl.col("time_end"), pl.col("type"),
((pl.col("offset") < buffer) & (pl.col("type") == pl.col("type_next"))).alias("can_merge")
])
).to_dicts()

_after_df = []
if len(_temp_df) != 0:
last_data = _temp_df[0]
for i in range(1, len(_temp_df)):
_dp = _temp_df[i]
if last_data['can_merge']:
last_data['time_end'] = _dp['time_end']
last_data['can_merge'] = _dp['can_merge']
else:
_after_df.append(last_data)
last_data = _dp

_after_df.append(last_data)

data = pl.from_dicts(_after_df)
Хотя это работает, мне кажется крайне странным, что мне приходится конвертировать поляры -> дикты -> поляры, есть ли способ сделать это через агрегации? Group_by_dynamic и прокрутка, кажется, принимают только время, но я хочу объединить последовательные строки по смещению.
Это Polars: 0.13.59

Подробнее здесь: https://stackoverflow.com/questions/732 ... ge-of-rows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»