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

标签 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    

这在数据具有底层自然排序和呈现表示形式(例如逐月日历)的情况下非常有用。

最佳答案

只需在列上重新索引?

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                         

关于python - 强制额外的列显示在 pandas 数据透视表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178331/

相关文章:

输入密码时,Python 子进程模块无法重定向标准输出?

python - 数据 View 不显示 DataFrame 的索引,也不显示 numpy 数组中的行号

python - 如何从 Pandas 数据帧为 LSTM 模型创建输入样本?

python - pandas 使用用户定义的时间间隔重新采样

python - 在 WAF 脚本中处理更改的文件

python - 这个排序代码有什么问题? Python

android - Python 使用 ApkTool 和 Subprocess 反编译 APK

python - 如何使用冒号分隔符从 csv 创建数据框

python - Pandas 数据框计算

r - 将多列相互相乘成R中的新数据框