Teradata Package for Python Function Reference | 20.00 - unpivot - Teradata Package for Python - Look here for syntax, methods and examples for the functions included in the Teradata Package for Python.

Teradata® Package for Python Function Reference - 20.00

Deployment
VantageCloud
VantageCore
Edition
Enterprise
IntelliFlex
VMware
Product
Teradata Package for Python
Release Number
20.00.00.03
Published
December 2024
ft:locale
en-US
ft:lastEdition
2024-12-19
dita:id
TeradataPython_FxRef_Enterprise_2000
Product Category
Teradata Vantage
teradataml.dataframe.dataframe.DataFrame.unpivot = unpivot(self, columns=None, transpose_column=None, measure_columns=None, exclude_nulls=True, returns=None, all_columns=False, **kwargs)
DESCRIPTION:
    Rotate data from columns into rows to create easy-to-read DataFrames.  
 
PARAMETERS:
    columns:
        Required when keyword arguments are not specified, optional otherwise.
        Specifies the dictonary of column(s) with distinct column 
        value(s) used for unpivoting the data.
        Notes:
            * key is a column expression or tuple of column expressions.
            * value is a literal to be taken by column when transposed 
              into "transpose_column". If not specified, value is generated
              by the function based on column names.
            * Number of columns specified in each key should be equal.
        For example:
            columns={(df.Q101Sales, df.Q101Cogs): "2001_Q1",
                     (df.Q201Sales, df.Q201Cogs): None,
                     (df.Q301Sales, df.Q301Cogs): "2001_Q3"},
            transpose_column="yr_qtr",
            This example transposes columns 'Q101Sales' and 'Q101Cogs' 
            into a row where 'yr_qtr' column value would be '2001_Q1'.
            Similarly, 'Q301Sales' and 'Q301Cogs' into row 
            with '2001_Q3' value in 'yr_qtr' column.
            For 'Q201Sales' and 'Q201Cogs' value of 'yr_qtr' is
            function generated.
        Types: dict
 
    transpose_column:
        Required Argument.
        Specifies the name of the column in the output DataFrame, which holds 
        the data for columns specified in keys of "columns" argument.
        Types: str
    
    measure_columns:
        Required Argument. 
        Specifies the name(s) of output column(s) to unpivot the data in the columns
        specified in "columns" argument.
        Notes:
            * Number of columns specified in "measure_columns" should be equal 
              to number of columns in specified in each key of "columns".
            * One exception for above is when all the columns is to be unpivoted
              into a single column. In such case, "measure_columns" should be
              specified as a string or list of string with one value.
        Types: str or list of str (string)
    
    exclude_nulls:
        Optional Argument.
        Specifies whether to exclude NULL(None) values while unpivoting the data.
        When set to True, excludes NULL(None), otherwise includes NULL.
        Default Value: True
        Types: bool
    
    returns:
        Optional Argument.
        Specifies the custom column name(s) to be returned in the output DataFrame.
        Notes:
            * Number of column names should be equal to one greater than number in
              "measure_column". 
            * All columns including columns in DataFrame which do not participate 
              in unpivot must be specified if "all_columns" is set to True.
        Types: str OR list of Strings (str)
    
    all_columns:
        Optional Argument.
        Specifies whether "returns" argument should include the names of only unpivot 
        columns or all columns.
        When set to True, all columns including columns in DataFrame which do not
        participate in unpivot must be specified.
        When set to False, only output columns excluding columns in DataFrame which do not
        participate in unpivot must be specified.
        Default Value: False
        Types: bool
    
    **kwargs:
        Specifies the keyword argument to accept column name and column value(s)
        as named arguments.
        For example:
            col1=df.year, col1_value=2001, col2=df.qtr, col2_value='Q1'
            or 
            col1=(df.Q101Sales, df.Q101Cogs), col1_value="2001_Q1",
            col2=(df.Q201Sales, df.Q201Cogs), col2_value=None,
            col3=(df.Q301Sales, df.Q301Cogs), col3_value="2001_Q3"
        Notes:
            * Either use "columns" argument or keyword arguments.
            * Format for column name arguments should be col1, col2,.. colN with
              values of type ColumnExpression.
            * Format for column value argument should be col1_value, col2_value,.. colN_value.
              
    
RETURNS:
        teradataml DataFrame
        Notes:
            * The columns which are not participating in unpivoting always aligned to 
              left most in the output DataFrame. 
            * Order of unpivot columns in output DataFrame follows the same order as the 
              values specified in argument "columns" or the order in keyword arguments. 
            * The output columns are named according to the values specified in 
              "transpose_column" and "measure_columns" or "returns" argument.
 
 
RAISES:
    TypeError, ValueError, TeradataMLException
 
 
EXAMPLES:
    # Create a teradataml DataFrame.
    >>> load_example_data("teradataml", "star1")
    >>> df = DataFrame("star1")
    >>> print(df)
            state    yr qtr  sales  cogs
    country
    USA        NY  2001  Q1   45.0  25.0
    CANADA     ON  2001  Q2   10.0   0.0
    CANADA     BC  2001  Q3   10.0   0.0
    USA        CA  2002  Q2   50.0  20.0
    USA        CA  2002  Q1   30.0  15.0
 
    # Create a pivot DataFrame. 
    >>> df = df.pivot(columns={df.qtr: ["Q1", "Q2", "Q3"], df.yr: ["2001"]},
    ...               aggfuncs=[df.sales.sum(), df.cogs.sum()],
    ...               returns=["Q101Sales", "Q201Sales", "Q301Sales",
    ...                        "Q101Cogs", "Q201Cogs", "Q301Cogs"])
    >>> print(df)
      country state  Q101Sales  Q201Sales  Q301Sales  Q101Cogs  Q201Cogs  Q301Cogs
    0  CANADA    BC        NaN        NaN        NaN       NaN      10.0       0.0
    1  CANADA    ON        NaN        NaN       10.0       0.0       NaN       NaN
    2     USA    NY       45.0       25.0        NaN       NaN       NaN       NaN
    3     USA    CA        NaN        NaN        NaN       NaN       NaN       NaN
    
    # Example 1: Unpivot quarterly sales data to 'sales' column and quarterly 
    #            cogs data to 'cogs' columns using "columns" argument.
    >>> unpivot_df = df.unpivot(columns={(df.Q101Sales, df.Q101Cogs): "2001_Q1",
    ...                                  (df.Q201Sales, df.Q201Cogs): None,
    ...                                  (df.Q301Sales, df.Q301Cogs): "2001_Q3"},
    ...                         transpose_column="yr_qtr",
    ...                         measure_columns=["sales", "cogs"])
    >>> print(unpivot_df)
      country state              yr_qtr  sales  cogs
    0  CANADA    BC  Q201Sales_Q201Cogs    NaN  10.0
    1  CANADA    ON             2001_Q1    NaN   0.0
    2  CANADA    ON             2001_Q3   10.0   NaN
    3  CANADA    BC             2001_Q3    NaN   0.0
    4     USA    NY  Q201Sales_Q201Cogs   25.0   NaN
    5     USA    NY             2001_Q1   45.0   NaN
 
    # Example 2: Unpivot 'sales' and 'cogs' in to a single column 'sales_cogs'.
    >>> unpivot_df = df.unpivot(columns={(df.Q101Sales, df.Q101Cogs,
    ...                                  df.Q201Sales, df.Q201Cogs,
    ...                                  df.Q301Sales, df.Q301Cogs): None},
    ...                         transpose_column="yr_qtr",
    ...                         measure_columns="sales_cogs")
    >>> print(unpivot_df)
      country state     yr_qtr  sales_cogs
    0  CANADA    BC   Q201Cogs        10.0
    1  CANADA    ON   Q101Cogs         0.0
    2  CANADA    ON  Q301Sales        10.0
    3  CANADA    BC   Q301Cogs         0.0
    4     USA    NY  Q201Sales        25.0
    5     USA    NY  Q101Sales        45.0
 
    # Example 3: Unpivot quarterly sales data to 'sales' column and quarterly 
    #            cogs data to 'cogs' columns using keyword arguments.    
    >>> unpivot_df = df.unpivot(transpose_column="yr_qtr",
    ...                         measure_columns=["sales", "cogs"],
    ...                         col1 = (df.Q101Sales, df.Q101Cogs),
    ...                         col1_value = "Q101",
    ...                         col2 = (df.Q201Sales, df.Q201Cogs),
    ...                         col2_value = None,
    ...                         col3 = (df.Q301Sales, df.Q301Cogs),
    ...                         col3_value = "Q103")
    >>> print(unpivot_df)
      country state              yr_qtr  sales  cogs
    0  CANADA    BC  Q201Sales_Q201Cogs    NaN  10.0
    1  CANADA    ON                Q101    NaN   0.0
    2  CANADA    ON                Q103   10.0   NaN
    3  CANADA    BC                Q103    NaN   0.0
    4     USA    NY  Q201Sales_Q201Cogs   25.0   NaN
    5     USA    NY                Q101   45.0   NaN
 
 
    # Example 4: Unpivot quarterly sales data to 'sales' column and quarterly
    #            cogs data to 'cogs' columns and rename column of the
    #            output using "returns" argument.
    >>> unpivot_df = df.unpivot(columns={(df.Q101Sales, df.Q101Cogs): "Q101",
    ...                                  (df.Q201Sales, df.Q201Cogs): None,
    ...                                  (df.Q301Sales, df.Q301Cogs): "Q301"},
    ...                         transpose_column="yr_qtr",
    ...                         measure_columns=["sales", "cogs"],
    ...                         returns=["year_quarter", "sales_data", "cogs_data"])
    >>> print(unpivot_df)
      country state        year_quarter  sales_data  cogs_data
    0  CANADA    BC  Q201Sales_Q201Cogs         NaN       10.0
    1  CANADA    ON                Q101         NaN        0.0
    2  CANADA    ON                Q301        10.0        NaN
    3  CANADA    BC                Q301         NaN        0.0
    4     USA    NY  Q201Sales_Q201Cogs        25.0        NaN
    5     USA    NY                Q101        45.0        NaN
 
    # Example 5: Unpivot quarterly sales data to 'sales' column and quarterly
    #            cogs data to 'cogs' columns and rename each column of the
    #            output using "returns" and "all_columns" argument.
    >>> unpivot_df = df.unpivot(columns={(df.Q101Sales, df.Q101Cogs): "Q101",
    ...                                  (df.Q201Sales, df.Q201Cogs): None,
    ...                                  (df.Q301Sales, df.Q301Cogs): "Q301"},
    ...                         transpose_column="yr_qtr",
    ...                         measure_columns=["sales", "cogs"],
    ...                         returns=["con", "st", "year_quarter",
    ...                                  "sales_data", "cogs_data"],
    ...                         all_columns=True)
    >>> print(unpivot_df)
          con  st        year_quarter  sales_data  cogs_data
    0  CANADA  BC  Q201Sales_Q201Cogs         NaN       10.0
    1  CANADA  ON                Q101         NaN        0.0
    2  CANADA  ON                Q301        10.0        NaN
    3  CANADA  BC                Q301         NaN        0.0
    4     USA  NY  Q201Sales_Q201Cogs        25.0        NaN
    5     USA  NY                Q101        45.0        NaN
 
    # Example 6: Unpivot quarterly sales data to 'sales' column and quarterly
    #            cogs data to 'cogs' columns by including NULLs.
    >>> unpivot_df = df.unpivot(columns={(df.Q101Sales, df.Q101Cogs): "2001_Q1",
    ...                                  (df.Q201Sales, df.Q201Cogs): None,
    ...                                  (df.Q301Sales, df.Q301Cogs): "2001_Q3"},
    ...                         transpose_column="yr_qtr",
    ...                         measure_columns=["sales", "cogs"],
    ...                         exclude_nulls=False)
    >>> print(unpivot_df)
      country state              yr_qtr  sales  cogs
    0     USA    CA             2001_Q3    NaN   NaN
    1     USA    NY  Q201Sales_Q201Cogs   25.0   NaN
    2     USA    NY             2001_Q3    NaN   NaN
    3  CANADA    BC             2001_Q1    NaN   NaN
    4  CANADA    BC             2001_Q3    NaN   0.0
    5  CANADA    ON             2001_Q1    NaN   0.0
    6  CANADA    BC  Q201Sales_Q201Cogs    NaN  10.0
    7     USA    NY             2001_Q1   45.0   NaN
    8     USA    CA  Q201Sales_Q201Cogs    NaN   NaN
    9     USA    CA             2001_Q1    NaN   NaN