如何展平MultiIndex列

时间:2018-05-23 07:11:15

标签: pandas dataframe

这是我的数据

              customer_id   value
var_name                    Value_1     Value_2 
0             1             70          80 

我想成功

var_name      customer_id   Value_1     Value_2 
0             1             70          80

我所做的是df.columns = ['customer_id', 'Value_1', 'Value_2'],但这很容易出错,因为我有数百列

我猜怎么做?

1 个答案:

答案 0 :(得分:1)

您始终获得MultiIndex,因为没有带有一个值的参数values

df = data.pivot_table(index='customer_id', 
                      columns='var_name', 
                      fill_value=0, 
                      aggfunc='max')

#columns names of first level  are not removed 
df.columns = df.columns.map('_'.join)
#first level removed, but possible duplicated columns names, so not recommended
#df.columns = df.columns.droplevel(0)

df = df.reset_index()

如果value中的标量(仅处理一列):

df = data.pivot_table(index='customer_id', 
                      columns='var_name', 
                     fill_value=0, 
                     values='age',
                     aggfunc='max')