Here's some data from another question:
date type value
1/1/2016 a 1
1/1/2016 b 2
1/1/2016 a 1
1/1/2016 b 4
1/2/2016 a 1
1/2/2016 b 1
Run this line of code:
x = df.groupby(['date', 'type']).value.agg(['sum', 'max']).unstack()
x
should look like this:
sum max
type a b a b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
I want to combine the columns on the upper and lower level to get this:
sum_a sum_b max_a max_b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
Is there an easy way to do this?
How to join pandas dataframes on multiple columns? Note that, the list of columns passed must be present in both the dataframes. If the column names are different in the two dataframes, use the left_on and right_on parameters to pass your column lists to merge on.
There's discussion of this here:
Python Pandas - How to flatten a hierarchical index in columns
And the consensus seems to be:
x.columns = ['_'.join(col) for col in x.columns.values]
print(x)
sum_a sum_b max_a max_b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
Would be nice if there was an inbuilt method for this, but there doesn't seem to be.
Very similar solution to the above using zip:
x.columns = [x + '_' + i for x, i in zip(x.columns.get_level_values(0), x.columns.get_level_values(1))]
x
sum_a sum_b max_a max_b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
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