This question already has an answer here:
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?
greg_data
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
来源:https://stackoverflow.com/questions/45878333/merge-multiindex-columns-together-into-1-level