#!/usr/bin/env python # encoding: utf-8 def column_values_to_column(pivot_column, value_column, kept_columns, df): """Pivot_column's values go to column with value_column under it, keeping kept_columns :param pivot_column: column name where value will become columns :param value_column: column name where value will be under pivot_column :param kept_columns: unchanged columns :param df: DataFrame to work with :return: Stack dataframe """ if pivot_column in kept_columns: pivot_columns = kept_columns else: pivot_columns = kept_columns + [pivot_column] return df.set_index(pivot_columns).unstack(pivot_column)[value_column].reset_index()