如何在使用pandas的透视表后消除多级索引?

14 浏览
0 Comments

如何在使用pandas的透视表后消除多级索引?

我有一个数据框(实际的数据框比这个要大得多):

sale_user_id    sale_product_id count
1                 1              1
1                 8              1
1                 52             1
1                 312            5
1                 315            1

然后使用以下代码将sale_product_id中的值作为列标题进行了重塑:

reshaped_df=id_product_count.pivot(index='sale_user_id',columns='sale_product_id',values='count')

结果数据框如下:

sale_product_id -1057   1   2   3   4   5   6   8   9   10  ... 98  980 981 982 983 984 985 986 987 99
sale_user_id                                                                                    
1                NaN    1.0 NaN NaN NaN NaN NaN 1.0 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3                NaN    1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4                NaN    NaN 1.0 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

如您所见,我们有一个多级索引,我需要将sale_user_id放在第一列,而不是使用多级索引:

我采用以下方法:

reshaped_df.reset_index()

结果将如下所示,我仍然有sale_product_id列,但不再需要它:

sale_product_id sale_user_id    -1057   1   2   3   4   5   6   8   9   ... 98  980 981 982 983 984 985 986 987 99
0                          1    NaN 1.0 NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1                          3    NaN 1.0 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2                          4    NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 

我可以对这个数据框进行子集操作以去除sale_product_id,但我认为这样不够高效。我正在寻找一种在重塑原始数据框时去除多级索引的高效方法。

0