I have a function call build_complementary_candidate(i, df_products.lazy(), df_product_hierarchy.lazy())
where i represents and index, df_products & df_product_hierarchy are two polars DataFrames that I cast to LazyFrames.
Here is my build_complementary_candidate() function:
def build_complementary_candidate(row, df_products, df_product_hierarchy):
return (df_products.join(df_product_hierarchy.join(df_product_hierarchy.filter(pl.col('PRODUCT_HIERARCHY') == df_products.filter(pl.col('INDEX') == row
).select('PRODUCT_HIERARCHY')
).select(pl.col('PRODUCT_HIERARCHY_CANDIDATE_POSITIONS').explode()), left_on='INDEX', right_on='PRODUCT_HIERARCHY_CANDIDATE_POSITIONS'
).select('PRODUCT_HIERARCHY'
),
on='PRODUCT_HIERARCHY'
).filter(pl.col('INDEX') != row
).select((pl.lit(df_products.filter(pl.col('INDEX') == row).select('EMBEDDINGS').implode(), allow_object=True).alias('QUERY_EMBEDDINGS'),
'SKU',
'CATL3',
'YELLOW_CAT',
(pl.lit(df_products.filter(pl.col('INDEX') == row).select('SKU'), allow_object=True)).alias('QUERY_SKU'),
(pl.lit(df_products.filter(pl.col('INDEX') == row).select('CATL3'), allow_object=True)).alias('QUERY_CAT'),
(pl.lit(df_products.filter(pl.col('INDEX') == row).select('YELLOW_CAT'), allow_object=True)).alias('QUERY_LEAF'),
'EMBEDDINGS',
).filter(pl.count('SKU').over(['SKU']) == 1
).select(
'SKU',
'CATL3',
'YELLOW_CAT',
'QUERY_SKU',
'QUERY_CAT',
'QUERY_LEAF',
(
(pl.col('QUERY_EMBEDDINGS').explode() + pl.col('EMBEDDINGS').explode()) / 2
).implode()
.over('SKU')
.alias('COMBINED_EMBEDDINGS')
)))```
I get an error "TypeError: cannot create expression literal for value of type LazyFrame: <LazyFrame at 0x7F9290109510>
Hint: Pass `allow_object=True` to accept any value and create a literal of type Object."
My question is what else is a polars literal expression besides the 4 lines where I call pl.lit()?
I set allow_object=True as a parameter but still am getting the error.