score:0

import itertools

>>> index = list(itertools.product(df['Date'].unique(), df['Proj'].unique()))
>>> df.sort_values(['Proj', 'Date'], inplace=True)
>>> df['CumCount'] = df.groupby(['Proj', 'Type']).cumcount() + 1
>>> df.drop_duplicates(['Date', 'Type', 'Proj'], keep='last', inplace=True)
>>> df = df.pivot_table(values='CumCount', index=['Date', 'Proj'], columns='Type')
>>> df.reindex(index).unstack('Proj').fillna(method='ffill').fillna(0).stack()

Type                item1   item2
Date        Proj        
2013-01-01  PJ1     1.0     0.0
            PJ2     0.0     0.0
2014-01-01  PJ1     1.0     1.0
            PJ2     0.0     0.0
2015-01-01  PJ1     1.0     2.0
            PJ2     0.0     0.0
2016-01-01  PJ1     2.0     2.0
            PJ2     2.0     0.0

Related Query