Method: Polars::Functions#col
- Defined in:
- lib/polars/functions/col.rb
#col(name, *more_names) ⇒ Expr
Return an expression representing a column in a DataFrame.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/polars/functions/col.rb', line 6 def col(name, *more_names) if more_names.any? if Utils.strlike?(name) names_str = [name] names_str.concat(more_names) return Selector._by_name(names_str.map(&:to_s), strict: true, expand_patterns: true).as_expr elsif Utils.is_polars_dtype(name) dtypes = [name] dtypes.concat(more_names) return Selector._by_type(dtypes).as_expr else msg = "invalid input for `col`\n\nExpected `str` or `DataType`, got #{name.class.name}." raise TypeError, msg end end if Utils.strlike?(name) Utils.wrap_expr(Plr.col(name.to_s)) elsif Utils.is_polars_dtype(name) dtypes = [name] Selector._by_dtype(dtypes).as_expr elsif name.is_a?(::Array) || name.is_a?(::Set) names = Array(name) if names.empty? return Utils.wrap_expr(Plr.cols(names)) end item = names[0] if Utils.strlike?(item) Selector._by_name(names.map(&:to_s), strict: true, expand_patterns: true).as_expr elsif Utils.is_polars_dtype(item) Selector._by_dtype(names).as_expr else msg = "invalid input for `col`\n\nExpected iterable of type `str` or `DataType`, got iterable of type #{item.class.name}." raise TypeError, msg end else msg = "invalid input for `col`\n\nExpected `str` or `DataType`, got #{name.class.name}." raise TypeError, msg end end |