I have a pandas.Series with multiindex:
index = pd.MultiIndex.from_tuples([('one', 'a'), ('one', 'b'),
                                   ('two', 'a'), ('two', 'b')])
s = pd.Series(np.arange(1.0, 5.0), index=index)
print(s)
one  a   1.0
     b   2.0
two  a   3.0
     b   4.0
dtype: float64
I want to merge the multiindex into a single index in the following form:
one_a   1.0
one_b   2.0
two_a   3.0
two_b   4.0
dtype: float64
Is there a nice way to do this?
To revert the index of the dataframe from multi-index to a single index using the Pandas inbuilt function reset_index(). Returns: (Data Frame or None) DataFrame with the new index or None if inplace=True.
Pandas series is a One-dimensional ndarray with axis labels. The labels need not be unique but must be a hashable type. The object supports both integer- and label-based indexing and provides a host of methods for performing operations involving the index.
Use map with join:
s.index = s.index.map('_'.join)
Alternative is list comprehension:
s.index = ['{}_{}'.format(i, j) for i, j in s.index]
print (s)
one_a    1.0
one_b    2.0
two_a    3.0
two_b    4.0
dtype: float64
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With