def xarray_unravel_levels(arr, names, my_convert = lambda x: x):
''' Takes in nested dict of dict of dataframes
names : names of lists; you dont have to include the last two dataframe columns & rows, but you can to override them
requires xarray
'''
import xarray
if type(arr) == pd.DataFrame:
return xarray.DataArray(arr, dims = None if len(names)==0 else names)
elif type(arr) in [OrderedDict, dict]:
return xarray.concat([xarray_unravel_levels(item, names[1:]) for k, item in arr.items()], pd.Index(arr.keys(), name=names[0]) )
elif type(arr) == xarray.DataArray:
return arr
else:
return my_convert(arr)
评论列表
文章目录