Best way to 'unmelt' Pandas output? #5094
trexfeathers
started this conversation in
Ideas
Replies: 2 comments 1 reply
|
@stevehadd @hannahbrown7 @DPeterK @pp-mo @nathan962 @stephenworsley how's this: Environment requirementsCode>>> import iris
>>> from iris.pandas import as_data_frame
>>> import pandas as pd
# Activate the new n-dimensional Cube-to-DataFrame conversion.
>>> iris.FUTURE.pandas_ndim = True
# Configure Pandas display.
>>> pd.set_option("display.width", 256)
>>> pd.set_option("display.max_columns", 6)
>>> pd.set_option("display.max_rows", 12)
>>> pd.set_option("display.precision", 3)
>>> path = iris.sample_data_path('ostia_monthly.nc')
>>> cube = iris.load_cube(path)
>>> print(cube)Here's the 'vanilla' multi-dimensional conversion: >>> df = as_data_frame(cube)
>>> print(df)An index level can be converted to columns using >>> interest_dim = "latitude"
>>> df_unstacked = df.unstack(level=interest_dim)
>>> print(df_unstacked)If the row and column headers being >>> df_formatted = df_unstacked.copy(deep=True)
>>> col_index = df_formatted.columns.names.index(interest_dim)
>>> df_formatted.columns = ["lat_{:.1f}".format(c[col_index]) for c in df_formatted.columns]
>>> df_formatted.reset_index(inplace=True)
>>> print(df_formatted) |
0 replies
|
that looks exactly like the sort of thing I was looking for @trexfeathers ! I'm definiitely going to try and update the data prep code use this and see whether there were any any gotchas I've forgotten about. |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Something either for the
iris.pandasdocstring examples, or actual Iris API, depending on how easy it is using Pandas API.Sometimes data scientists find it helpful to specify a dimension of interest for a machine learning model. This should be 'pivoted'/'unmelted' into individual
DataFramecolumns for each dimension value (e.g. 33 columns for 33 height levels).Can this be done by converting the fully melted
DataFramethatiris.pandas.to_dataframe()produces? If that's not easy using Pandas API, what can we do within Iris to aid the conversion between dimensional and tabular data?From @stevehadd and @hannahbrown7
All reactions