Giter Site home page Giter Site logo

Comments (6)

stinodego avatar stinodego commented on August 18, 2024 1

I think this can be handled purely on the Python side. Make time_unit optional and set it based on the value of nanoseconds.

from polars.

douglas-raillard-arm avatar douglas-raillard-arm commented on August 18, 2024

It can also be seen with just pl.duration():

>>> pl.LazyFrame().with_columns(pl.duration(nanoseconds=1)).collect()
shape: (1, 1)
┌──────────────┐
│ literal      │
│ ---          │
│ duration[μs] │
╞══════════════╡
│ 0µs          │
└──────────────┘

>>> pl.LazyFrame().with_columns(pl.duration(nanoseconds=1).cast(pl.Int64)).collect()
shape: (1, 1)
┌─────────┐
│ literal │
│ ---     │
│ i64     │
╞═════════╡
│ 0       │
└─────────┘

>>> pl.LazyFrame().with_columns(pl.duration(nanoseconds=1).cast(pl.Duration('ns'))).collect()
shape: (1, 1)
┌──────────────┐
│ literal      │
│ ---          │
│ duration[ns] │
╞══════════════╡
│ 0ns          │
└──────────────┘

>>> pl.LazyFrame().with_columns(pl.duration(nanoseconds=1).cast(pl.Duration('ns')).cast(pl.Int64)).collect()
shape: (1, 1)
┌─────────┐
│ literal │
│ ---     │
│ i64     │
╞═════════╡
│ 0       │
└─────────┘

from polars.

douglas-raillard-arm avatar douglas-raillard-arm commented on August 18, 2024

Note that all seems to fall back in order if pl.duration(..., time_unit='ns') is specified, so maybe all this needs is a an automatic setting of time_unit that is consistent with the values provided, or an exception if a sub-Xs component is provided when time_unit='Xs' is specified.

from polars.

stinodego avatar stinodego commented on August 18, 2024

This is not a bug, but we can improve the API here. For now, you can specify time_unit='ns' as you have found.

The default time unit for duration is microseconds. So pl.duration(nanoseconds=999) results in a Duration(us).
We can possibly improve here by inferring the time unit from the inputs, e.g. if time_unit is None andnanoseconds is specified, create a Duration(ns).

Adding two durations of different precisions will use the lowest precision to avoid overflows. So the result here is expected.

from polars.

cojmeister avatar cojmeister commented on August 18, 2024

Can I assign this to me?
Any places I should start my work at?

from polars.

cojmeister avatar cojmeister commented on August 18, 2024

Opened PR: #14987

from polars.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.