Код: Выделить всё
import polars as pl
import datetime as dt
from dateutil.relativedelta import relativedelta
def get_3_month_splits(product: str) -> list[str]:
front, start_dt, total_m = product.rsplit('.', 2)
start_dt = dt.datetime.strptime(start_dt, '%Y%m')
total_m = int(total_m)
return [f'{front}.{(start_dt+relativedelta(months=m)).strftime("%Y%m")}.3' for m in range(0, total_m, 3)]
df = pl.DataFrame({
'product': ['CHECK.GB.202403.12', 'CHECK.DE.202506.6', 'CASH.US.202509.12'],
'qty': [3, 6, -3],
'price': [100, 102, 95],
})
print(df)
df2 = pl.DataFrame([{'product_split': split} | d
for d in df.iter_rows(named=True) for split in get_3_month_splits(d['product'])
])
print(df2)
Вышеупомянутое позволяет достичь этой цели, но существует ли более удобный способ добиться этого с помощью with_columns?>
Подробнее здесь: https://stackoverflow.com/questions/788 ... -is-a-list
Мобильная версия