Например, начиная с:
Код: Выделить всё
import logging
import polars as pl
penguins_pl = pl.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv")
Код: Выделить всё
penguins_pl.mine.startlog().filter(pl.col("species")=="Adelie").mine.endlog()
План состоит в том, чтобы startlog сохранял форму кадра данных во временной переменной, а затем повторно использовал ее в endlog.
Я пробовал это:
Код: Выделить всё
@pl.api.register_dataframe_namespace("mine")
class MinePolarsDataframeUtils:
def __init__(self, df: pl.DataFrame):
self._df = df
def startlog(self):
self._shape = self._df.shape
return(self._df)
def endlog(self):
if not self._shape:
raise ValueError("startlog() must be called before endlog()")
dr = self._shape[0] - self._df.shape[0]
dc = self._shape[1] - self._df.shape[1]
logging.getLogger("polars_logger").info(f"Rows added {dr}, cols added {dc}")
self._shape = None
return(self._df)
То есть, когда вызывается endlog, класс запускается с нуля, и значение self._shape, сохраненное startlog, не переносится.
То есть, когда endlog вызывается, self._shape не определен.
Как сохранить пользовательские переменные между вызовами при расширении поляров?
Связано: запись результатов операции в pandas (эквивалент STATA/tidylog)
Связано: https://stackoverflow.com/a/71729343/1719931
Подробнее здесь: https://stackoverflow.com/questions/798 ... ween-calls
Мобильная версия