Триллеры: альтернативы спермеPython

Программы на Python
Anonymous
 Триллеры: альтернативы сперме

Сообщение Anonymous »

У меня есть фрагмент панды ниже, который я хочу преобразовать в полярные, чтобы попробовать. Ожидаемый результат для полярных полей такой же, как и для панд, но не получается, так как совокупная сумма отсутствует. Как добиться аналогичного результата?:
import pandas as pd
import numpy as np

data = {
'date': pd.date_range(start='2024-09-01', periods=12),
'reserved_before': [0, 1, 2, np.nan, np.nan, 1, 2, 3, np.nan, 3, 4, 5]
}
df = pd.DataFrame(data)
df['reserved'] = df['reserved_before'].notna()

def assign_group_id(series):
return (series != series.shift()).cumsum()

df['group'] = assign_group_id(df['reserved'])

def min_max(group):
non_nan = group['reserved_before'].dropna()
if len(non_nan) > 0:
return pd.Series({'min': non_nan.min(), 'max': non_nan.max()})
return pd.Series({'min': np.nan, 'max': np.nan})

result = df.groupby('group').apply(min_max).reset_index()

df = df.merge(result, on='group', how='left')

df = df.drop(columns=['group', 'reserved'])
df = df.rename(columns={'min': 'block_min', 'max': 'block_max'})

Ожидаемый результат для поляров такой же, как и для панд, но не получается, поскольку совокупная сумма отсутствует. Как добиться аналогичного результата?:
import polars as pl
from datetime import date

df = pl.DataFrame({
'date': pl.date_range(start=date(2024, 9, 1), end=date(2024, 9, 12), interval='1d', eager=True),
'reserved_before': [0, 1, 2, None, None, 1, 2, 3, None, 3, 4, 5]
})

df = df.with_columns(
(df['reserved_before'].is_not_null()).alias('reserved')
)

df = df.with_columns(
(df['reserved'] != df['reserved'].shift(1)).cumsum().alias('group')
)

min_max_df = (
df.groupby('group')
.agg(
pl.col('reserved_before').min().alias('block_min'),
pl.col('reserved_before').max().alias('block_max')
)
)

df = df.join(min_max_df, on='group', how='left')
df = df.drop('group', 'reserved')

Результирующая ошибка:
AttributeError: 'Series' object has no attribute 'cumsum'


Подробнее здесь: https://stackoverflow.com/questions/789 ... ternatives

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