From d45ae543b5052e63991ff94c8e266d39d641675b Mon Sep 17 00:00:00 2001 From: Timothy Heys Date: Tue, 11 Sep 2018 10:14:50 +0200 Subject: [PATCH] Fixed an issue where filled values in a sorted/pivoted pandas data frame would mix data types, breaking the sort --- fireant/slicer/widgets/pandas.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fireant/slicer/widgets/pandas.py b/fireant/slicer/widgets/pandas.py index ad698e5a..d3893007 100644 --- a/fireant/slicer/widgets/pandas.py +++ b/fireant/slicer/widgets/pandas.py @@ -117,9 +117,8 @@ def pivot_data_frame(self, data_frame, pivot=(), transpose=False): data_frame.name = data_frame.columns.levels[0][0] # capture the name of the metrics column data_frame.columns = data_frame.columns.droplevel(0) # drop the metrics level - data_frame.fillna('', inplace=True) - - return self.sort_data_frame(data_frame) + return self.sort_data_frame(data_frame) \ + .fillna(value='') def sort_data_frame(self, data_frame): if not self.sort: @@ -142,6 +141,13 @@ def sort_data_frame(self, data_frame): if not sort_columns: return data_frame + # pandas refuses a single item list for these arguments if the data frame has a single level index + if not isinstance(unsorted.index, pd.MultiIndex): + if isinstance(sort_columns, list): + sort_columns = sort_columns[0] + if isinstance(ascending, list): + ascending = ascending[0] + return unsorted \ .sort_values(sort_columns, ascending=ascending) \ .set_index(index_names)