将pandas交叉表数据帧更改为普通表格式:

时间:2017-05-30 08:31:01

标签: pandas dataframe

我通过以下pandas交叉表获得了聚合数据帧。但是,我想像这样的列格式:

id         ymdh            A11      A12      A15      A16   
--------------------------------------------------------------  

如何将原始数据框更改为我想要的格式?

* Original output dataframe:     

df = pd.crosstab(df.ymdh, df_data.id, margins=False,     
                      values=df.duration, dropna=False,
                      normalize='columns',
                      aggfunc=[np.sum]).reset_index().fillna(0)


            ymdh       sum                                                     
id                     A11      A12      A15      A16       
----------------------------------------------------------
0      2016040100  0.000000  0.002222  0.049398  0.018077  
1      2016040101  0.003354  0.004141  0.078531  0.015131 
2      2016040102  0.001397  0.002424  0.000633  0.001473  

2 个答案:

答案 0 :(得分:1)

我认为sum需要crosstab

df = pd.crosstab(df.ymdh, df_data.id, margins=False,     
                      values=df.duration, dropna=False,
                      normalize='columns',
                      aggfunc='sum').reset_index().fillna(0)

答案 1 :(得分:0)

对我来说,这个问题的话题(截至2019-08-20:将pandas crossstab数据框更改为纯表格格式)听起来颇具误导性。同样,有600多个人已经看过这个问题,也许他们也在寻找其他东西。

如果您希望将交叉表转换为堆叠的数据框,请查看以下讨论:Converting a pandas crosstab into a stacked dataframe

与堆叠数据框交叉表的示例可以是具有两列的常规表:

col-1: consists of row labels,
col-2: consists of column labels of the crosstab.