将 MultiIndex 列合并为 1 级
Merge MultiIndex columns together into 1 level
这是另一个问题的一些数据:
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
运行这行代码:
x = df.groupby(['date', 'type']).value.agg(['sum', 'max']).unstack()
x
应该是这样的:
sum max
type a b a b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
我想合并上层和下层的列得到这个:
sum_a sum_b max_a max_b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
有没有简单的方法来做到这一点?
这里有关于这个的讨论:
Python Pandas - How to flatten a hierarchical index in columns
共识似乎是:
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
如果有内置方法就好了,但好像没有。
与上述使用 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
这是另一个问题的一些数据:
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
运行这行代码:
x = df.groupby(['date', 'type']).value.agg(['sum', 'max']).unstack()
x
应该是这样的:
sum max
type a b a b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
我想合并上层和下层的列得到这个:
sum_a sum_b max_a max_b
date
1/1/2016 2 6 1 4
1/2/2016 1 1 1 1
有没有简单的方法来做到这一点?
这里有关于这个的讨论:
Python Pandas - How to flatten a hierarchical index in columns
共识似乎是:
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
如果有内置方法就好了,但好像没有。
与上述使用 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