sqlmesh.utils.pandas API documentation

Edit on GitHub

# sqlmesh.utils.pandas

View Source

     1from datetime import date, datetime
     2
     3import pandas as pd
     4
     5
     6def filter_df_by_timelike(
     7    df: pd.DataFrame,
     8    column: str,
     9    col_format: str,
    10    start: datetime,
    11    end: datetime,
    12) -> pd.DataFrame:
    13    """
    14    Inclusively filters a DataFrame by a column that is a datetime-like type. This is done by converting the DF column
    15    to a string and having it match the format of the start and end dates.
    16    """
    17
    18    start_format = start.strftime(col_format)
    19    end_format = end.strftime(col_format)
    20
    21    df_time = df[column]
    22    if len(df_time) == 0:
    23        return df
    24    elif isinstance(df_time[0], (datetime, date)):
    25        df_time = df_time.apply(lambda x: x.strftime(col_format))  # type: ignore
    26    elif not pd.api.types.is_string_dtype(df_time.dtype):  # type: ignore
    27        df_time = df_time.dt.strftime(col_format)
    28    return df[df_time.between(start_format, end_format)]

def filter_df_by_timelike( df: pandas.core.frame.DataFrame, column: str, col_format: str, start: datetime.datetime, end: datetime.datetime) -> pandas.core.frame.DataFrame: View Source

     7def filter_df_by_timelike(
     8    df: pd.DataFrame,
     9    column: str,
    10    col_format: str,
    11    start: datetime,
    12    end: datetime,
    13) -> pd.DataFrame:
    14    """
    15    Inclusively filters a DataFrame by a column that is a datetime-like type. This is done by converting the DF column
    16    to a string and having it match the format of the start and end dates.
    17    """
    18
    19    start_format = start.strftime(col_format)
    20    end_format = end.strftime(col_format)
    21
    22    df_time = df[column]
    23    if len(df_time) == 0:
    24        return df
    25    elif isinstance(df_time[0], (datetime, date)):
    26        df_time = df_time.apply(lambda x: x.strftime(col_format))  # type: ignore
    27    elif not pd.api.types.is_string_dtype(df_time.dtype):  # type: ignore
    28        df_time = df_time.dt.strftime(col_format)
    29    return df[df_time.between(start_format, end_format)]

Inclusively filters a DataFrame by a column that is a datetime-like type. This is done by converting the DF column to a string and having it match the format of the start and end dates.