mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Fixed Pandas MultiIndex for refactored Filter.get_pandas_dataframe(...) routine
This commit is contained in:
parent
05b34977a6
commit
13b3632c31
3 changed files with 32 additions and 10 deletions
|
|
@ -352,9 +352,11 @@ class CrossFilter(object):
|
|||
df = self.left_filter.get_pandas_dataframe(datasize, summary)
|
||||
# If left and right filters are different, combine their bins
|
||||
else:
|
||||
df = '(' + self.left_filter.get_pandas_dataframe(datasize, summary)
|
||||
df += ' ' + self.binary_op + ' '
|
||||
df += self.right_filter.get_pandas_dataframe(datasize, summary) + ')'
|
||||
left_df = self.left_filter.get_pandas_dataframe(datasize, summary)
|
||||
right_df = self.right_filter.get_pandas_dataframe(datasize, summary)
|
||||
left_df = left_df.astype(str)
|
||||
right_df = right_df.astype(str)
|
||||
df = '(' + left_df + ' ' + self.binary_op + ' ' + right_df + ')'
|
||||
|
||||
return df
|
||||
|
||||
|
|
|
|||
|
|
@ -566,11 +566,11 @@ class Filter(object):
|
|||
level_bins = np.tile(level_bins, tile_factor)
|
||||
level_dict[level_key] = level_bins
|
||||
|
||||
# Initialize a Pandas DataFrame from the level dictionary
|
||||
if level_df is None:
|
||||
level_df = pd.DataFrame(level_dict)
|
||||
else:
|
||||
level_df = pd.concat([level_df, pd.DataFrame(level_dict)], axis=1)
|
||||
# Initialize a Pandas DataFrame from the level dictionary
|
||||
if level_df is None:
|
||||
level_df = pd.DataFrame(level_dict)
|
||||
else:
|
||||
level_df = pd.concat([level_df, pd.DataFrame(level_dict)], axis=1)
|
||||
|
||||
# Create DataFrame column for distribcell instances IDs
|
||||
# NOTE: This is performed regardless of whether the user
|
||||
|
|
@ -613,7 +613,6 @@ class Filter(object):
|
|||
filter_bins = filter_bins
|
||||
df = pd.concat([df, pd.DataFrame({self.type :filter_bins})])
|
||||
|
||||
df = df.astype(np.str)
|
||||
return df
|
||||
|
||||
def __repr__(self):
|
||||
|
|
|
|||
|
|
@ -1076,8 +1076,29 @@ class Tally(object):
|
|||
df['mean'] = self.mean.ravel()
|
||||
df['std. dev.'] = self.std_dev.ravel()
|
||||
|
||||
df.index.name = 'bin'
|
||||
df = df.dropna(axis=1)
|
||||
|
||||
# Expand the columns into Pandas MultiIndices for readability
|
||||
if pd.__version__ >= '0.16':
|
||||
columns = copy.deepcopy(df.columns.values)
|
||||
|
||||
# Convert all elements in columns list to tuples
|
||||
for i, column in enumerate(columns):
|
||||
if not isinstance(column, tuple):
|
||||
columns[i] = (column,)
|
||||
|
||||
# Make each tuple the same length
|
||||
max_len_column = len(max(columns, key=len))
|
||||
for i, column in enumerate(columns):
|
||||
delta_len = max_len_column - len(column)
|
||||
if delta_len > 0:
|
||||
new_column = list(column)
|
||||
new_column.extend(['']*delta_len)
|
||||
columns[i] = tuple(new_column)
|
||||
|
||||
# Create and set a MultiIndex for the DataFrame's columns
|
||||
df.columns = pd.MultiIndex.from_tuples(columns)
|
||||
|
||||
return df
|
||||
|
||||
def export_results(self, filename='tally-results', directory='.',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue