当表中的所有entires都为0时,如何避免在Python数据透视表中跳过几个月

时间:2015-10-26 19:05:25

标签: python python-2.7 sorting pandas pivot-table

我有一个数据透视表,我按照年份和月份从带有时间戳对象的pandas数据帧列中对索引进行排序。除了一个细节之外,这对我需要的东西很有用。如果特定月/年没有条目,则不会填充数据透视表中的特定行。

我需要它显示为所有条目的0并且不会跳过这几个月。我怎么能做到这一点?

可在此处找到一些示例数据:http://www.filedropper.com/temp

我必须生成数据透视表的Curent代码如下。不幸的是,我不知道分享结果数据的有效方法,但是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'])

1 个答案:

答案 0 :(得分:1)

这符合您的期望吗?如果要填充,请使用.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]