强制额外的列显示在pandas数据透视表中?

时间:2018-03-08 16:49:47

标签: python pandas dataframe pivot pivot-table

是否可以强制Pandas在数据透视表中包含一组特定的有序列,而不管底层数据是否保证其存在?例如

df = pd.DataFrame({'Project': ['ProjectA', 'ProjectB', 'ProjectC'],
                   'Start Month': [2,5,9],
                   'End Month': [3,7,10],
                   'Category': ['A', 'B', 'A']
                  })
pv = pd.pivot_table(df, values='Project', index='Category', columns='Start Month', aggfunc={'Project':lambda x: "".join(x) }).fillna('')

产生

Start Month  2          5         9
Category        
A            ProjectA             ProjectC
B                       ProjectB    

但我想要的是查看12个月中每一个的列,即使那里没有数据:

Start Month  1  2         3  4  5        6  7  8  9         10  11  12
Category        
A               ProjectA                          ProjectC
B                               ProjectB    

这在数据具有基础自然排序和呈现表示的情况下非常有用,例如逐月日历。

1 个答案:

答案 0 :(得分:3)

只需对列进行重新索引?

pv.reindex(columns=np.arange(1, 13), fill_value='')

Start Month 1         2  3  4         5  6  7  8         9  10 11 12
Category                                                         
A               ProjectA                           ProjectC      
B                               ProjectB