Path: blob/main/docs/source/src/python/user-guide/expressions/casting.py
7890 views
# --8<-- [start:dfnum]1import polars as pl23df = pl.DataFrame(4{5"integers": [1, 2, 3],6"big_integers": [10000002, 2, 30000003],7"floats": [4.0, 5.8, -6.3],8}9)1011print(df)12# --8<-- [end:dfnum]1314# --8<-- [start:castnum]15result = df.select(16pl.col("integers").cast(pl.Float32).alias("integers_as_floats"),17pl.col("floats").cast(pl.Int32).alias("floats_as_integers"),18)19print(result)20# --8<-- [end:castnum]212223# --8<-- [start:downcast]24print(f"Before downcasting: {df.estimated_size()} bytes")25result = df.with_columns(26pl.col("integers").cast(pl.Int16),27pl.col("floats").cast(pl.Float32),28)29print(f"After downcasting: {result.estimated_size()} bytes")30# --8<-- [end:downcast]3132# --8<-- [start:overflow]33from polars.exceptions import InvalidOperationError3435try:36result = df.select(pl.col("big_integers").cast(pl.Int8))37print(result)38except InvalidOperationError as err:39print(err)40# --8<-- [end:overflow]4142# --8<-- [start:overflow2]43result = df.select(pl.col("big_integers").cast(pl.Int8, strict=False))44print(result)45# --8<-- [end:overflow2]464748# --8<-- [start:strings]49df = pl.DataFrame(50{51"integers_as_strings": ["1", "2", "3"],52"floats_as_strings": ["4.0", "5.8", "-6.3"],53"floats": [4.0, 5.8, -6.3],54}55)5657result = df.select(58pl.col("integers_as_strings").cast(pl.Int32),59pl.col("floats_as_strings").cast(pl.Float64),60pl.col("floats").cast(pl.String),61)62print(result)63# --8<-- [end:strings]646566# --8<-- [start:strings2]67df = pl.DataFrame(68{69"floats": ["4.0", "5.8", "- 6 . 3"],70}71)72try:73result = df.select(pl.col("floats").cast(pl.Float64))74except InvalidOperationError as err:75print(err)76# --8<-- [end:strings2]7778# --8<-- [start:bool]79df = pl.DataFrame(80{81"integers": [-1, 0, 2, 3, 4],82"floats": [0.0, 1.0, 2.0, 3.0, 4.0],83"bools": [True, False, True, False, True],84}85)8687result = df.select(88pl.col("integers").cast(pl.Boolean),89pl.col("floats").cast(pl.Boolean),90pl.col("bools").cast(pl.Int8),91)92print(result)93# --8<-- [end:bool]9495# --8<-- [start:dates]96from datetime import date, datetime, time9798df = pl.DataFrame(99{100"date": [101date(1970, 1, 1), # epoch102date(1970, 1, 10), # 9 days later103],104"datetime": [105datetime(1970, 1, 1, 0, 0, 0), # epoch106datetime(1970, 1, 1, 0, 1, 0), # 1 minute later107],108"time": [109time(0, 0, 0), # reference time110time(0, 0, 1), # 1 second later111],112}113)114115result = df.select(116pl.col("date").cast(pl.Int64).alias("days_since_epoch"),117pl.col("datetime").cast(pl.Int64).alias("us_since_epoch"),118pl.col("time").cast(pl.Int64).alias("ns_since_midnight"),119)120print(result)121# --8<-- [end:dates]122123# --8<-- [start:dates2]124df = pl.DataFrame(125{126"date": [date(2022, 1, 1), date(2022, 1, 2)],127"string": ["2022-01-01", "2022-01-02"],128}129)130131result = df.select(132pl.col("date").dt.to_string("%Y-%m-%d"),133pl.col("string").str.to_datetime("%Y-%m-%d"),134)135print(result)136# --8<-- [end:dates2]137138139