当 table 中的所有条目均为 0 时,如何避免在 Python 数据透视表 table 中跳过月份

How to avoiding skipped months in Python pivot table when all entires in table are 0

我有一个数据透视表 table,我从带有时间戳对象的 pandas 数据框列中按年然后按月对索引进行排序。除了一个细节外,这对我需要的东西非常有用。如果没有特定 month/year 的条目,则不会填充数据透视表 table 中的特定行。

我需要它在所有条目中显示为 0,而不是跳过月份。我怎样才能做到这一点?

一些示例数据可以在这里找到:http://www.filedropper.com/temp

我必须生成数据透视表 table 的当前代码如下。不幸的是,我不知道共享结果数据的有效方法,但是 2016 年的月份没有显示索引和列

data2['MonthDateBuild']=data2.DateBuild.dt.month
data2['YearDateBuild']=data2.DateBuild.dt.year
data2['MonthDateOpen']=data2.DateOpen.dt.month
data2['YearDateOpen']=data2.DateOpen.dt.year
pd.pivot_table(data2,index=['YearDateBuild','MonthDateBuild'],values=['Quantity'],columns=['YearDateOpen','MonthDateOpen'])

这是否符合您的预期?如果需要填充,请使用 .fillna

pv = pd.pivot_table(data2,index=pd.Grouper(key='DateBuild', freq='M'),
                    values='Quantity',
                    columns=pd.Grouper(key='DateOpen', freq='M'))
pv.reindex(index=pd.date_range(pv.index.min(), pv.index.max(), freq='M'),
       columns=pd.date_range(pv.columns.min(), pv.columns.max(), freq='M'))
#             2013-05-31  2013-06-30  2013-07-31  2013-08-31     ...      \
# 2012-06-30         NaN         NaN         NaN         NaN     ...
# 2012-07-31         NaN         NaN         NaN         NaN     ...
# 2012-08-31         NaN         NaN         NaN         NaN     ...
# 2012-09-30         NaN         NaN         NaN         NaN     ...
# ...                ...         ...         ...         ...     ...
# 2016-02-29         NaN         NaN         NaN         NaN     ...
# 2016-03-31         NaN         NaN         NaN         NaN     ...
# 2016-04-30         NaN         NaN         NaN         NaN     ...
# 2016-05-31         NaN         NaN         NaN         NaN     ...
# 
#             2016-05-31  2016-06-30  2016-07-31  2016-08-31
# 2012-06-30         NaN         NaN         NaN         NaN
# 2012-07-31         NaN         NaN         NaN         NaN
# 2012-08-31         NaN         NaN         NaN         NaN
# 2012-09-30         NaN         NaN         NaN         NaN
# ...                ...         ...         ...         ...
# 2016-02-29         NaN         NaN         NaN         NaN
# 2016-03-31         NaN         NaN         NaN         NaN
# 2016-04-30         NaN         NaN         NaN         NaN
# 2016-05-31         NaN         NaN         NaN           1
# 
# [48 rows x 40 columns]