Polars.min does not work with expressions
pstalcup opened this issue · 3 comments
pstalcup commented
When trying to compute the min across multiple columns, Polars raises an error when you attempt to pass an expression into Polars.min
:
Polars::DataFrame.new([{a: 1, b: 2, c: 3}]).with_column(Polars.min(Polars.col("a")).alias("d"))
# Raises ...lib/polars/lazy_functions.rb:147:in `min': undefined method `_min_exprs' for Polars:Module (NoMethodError)
ankane commented
Hi @pstalcup, thanks for reporting. Since that path was never implemented in Ruby and no longer exists in Python, I've removed it in the commit above.
pl.DataFrame([{'a': 1, 'b': 2, 'c': 3}]).with_columns(pl.min(pl.col('a')).alias('d'))
# raises ValueError: could not convert value 'Unknown' as a Literal
You can use Polars.min("a")
or Polars.min(["a", "b"])
instead.
pstalcup commented
That sounds good!
I am still getting the same error with this though:
Polars::DataFrame.new([{a: 1, b: 2, c: 3}]).with_column(Polars.min(["a", "b"]).alias("d"))
# lib/polars/lazy_functions.rb:147:in `min': undefined method `_min_exprs' for Polars:Module (NoMethodError)
Utils.wrap_expr(_min_exprs(exprs))
^^^^^^^^^^
ankane commented
It looks like Polars.min(["a", "b"])
won't work until the next release, but you can do:
df.with_column(Polars.min("a").alias("d")).with_column(Polars.min("b").alias("e"))