如何在不丢失列名的情况下合并两个数据透视表

时间:2019-07-08 05:42:35

标签: python concat

我试图合并两个数据透视表,但是在将两个表联接后,列丢失了。

数据透视1:

SATISFIED_CHECKOUT             1.0   2.0   3.0   4.0   5.0
SEGMENT                                                    
BOTH_TX_SPEND_GROWN            0.01  0.03  0.04  0.14  0.80
BOTH_TX_SPEND_NO_GROWTH        0.01  0.03  0.04  0.14  0.78
ONLY_SHOPPED_2018               NaN  0.03  0.04  0.15  0.78
ONLY_SHOPPED_2019              0.01  0.02  0.05  0.13  0.78
ONLY_SPEND_GROWN               0.01  0.02  0.03  0.12  0.82
ONLY_TX_GROWN                  0.01  0.03  0.03  0.14  0.79
SHOPPED_NEITHER                 NaN  0.04  0.02  0.15  0.79

Pivot2:

SATISFIED_FOOD                 1.0   2.0   3.0   4.0   5.0
SEGMENT                                                    
BOTH_TX_SPEND_GROWN            0.00  0.01  0.07  0.20  0.71
BOTH_TX_SPEND_NO_GROWTH        0.00  0.01  0.08  0.19  0.71
ONLY_SHOPPED_2018              0.01  0.01  0.07  0.19  0.71
ONLY_SHOPPED_2019              0.00  0.01  0.10  0.19  0.69
ONLY_SPEND_GROWN               0.00  0.01  0.08  0.18  0.72
ONLY_TX_GROWN                  0.00  0.02  0.07  0.19  0.72
SHOPPED_NEITHER                 NaN   NaN  0.10  0.20  0.70

原始df如下所示:

SATISFIED_CHECKOUT         SATISFIED_FOOD           Persona
        1                         1            BOTH_TX_SPEND_GROWN 
        2                         3            BOTH_TX_SPEND_NO_GROWTH 
        3                         2            ONLY_SHOPPED_2019 
       ....                      ....             ............
        5                         3            ONLY_SHOPPED_2019

我正在使用代码:

a = pd.pivot_table(df,index=["SEGMENT"], columns=["SATISFIED_FOOD"], aggfunc='size').apply(lambda x: x / x.sum(), axis=1).round(2)

b = pd.pivot_table(df,index=["SEGMENT"], columns=["SATISFIED_CHECKOUT"], aggfunc='size').apply(lambda x: x / x.sum(), axis=1).round(2)

pd.concat([a, b],axis=1)

结果如下:

                          1.0   2.0   3.0   4.0  ...   2.0   3.0   4.0   5.0
SEGMENT                                          ...                        
BOTH_TX_SPEND_GROWN      0.01  0.03  0.07  0.23  ...  0.03  0.04  0.14  0.80
BOTH_TX_SPEND_NO_GROWTH  0.01  0.03  0.06  0.22  ...  0.03  0.04  0.14  0.78
ONLY_SHOPPED_2018        0.01  0.04  0.08  0.24  ...  0.03  0.04  0.15  0.78
ONLY_SHOPPED_2019        0.01  0.03  0.08  0.25  ...  0.02  0.05  0.13  0.78
ONLY_SPEND_GROWN         0.00  0.03  0.07  0.22  ...  0.02  0.03  0.12  0.82
ONLY_TX_GROWN            0.01  0.02  0.05  0.22  ...  0.03  0.03  0.14  0.79
SHOPPED_NEITHER           NaN  0.01  0.07  0.28  ...  0.04  0.02  0.15  0.79
[7 rows x 15 columns]

但是我想看到如下结果:

                        SATISFIED_CHECKOUT             SATISFIED_FOOD
                          1.0   2.0   3.0   4.0  ...   2.0   3.0   4.0   5.0
SEGMENT                                          ...                        
BOTH_TX_SPEND_GROWN      0.01  0.03  0.07  0.23  ...  0.03  0.04  0.14  0.80
BOTH_TX_SPEND_NO_GROWTH  0.01  0.03  0.06  0.22  ...  0.03  0.04  0.14  0.78
ONLY_SHOPPED_2018        0.01  0.04  0.08  0.24  ...  0.03  0.04  0.15  0.78
ONLY_SHOPPED_2019        0.01  0.03  0.08  0.25  ...  0.02  0.05  0.13  0.78
ONLY_SPEND_GROWN         0.00  0.03  0.07  0.22  ...  0.02  0.03  0.12  0.82
ONLY_TX_GROWN            0.01  0.02  0.05  0.22  ...  0.03  0.03  0.14  0.79
SHOPPED_NEITHER           NaN  0.01  0.07  0.28  ...  0.04  0.02  0.15  0.79
[7 rows x 15 columns]

0 个答案:

没有答案