def aggregate_weights(weights, drop_date=False):
    """
    Transforms list of tuples of weights into pandas.DataFrame of weights.

    Parameters:
    -----------
    weights: list
        A list of tuples consisting of the generic instrument name,
        the tradeable contract as a string, the weight on this contract as a
        float and the date as a pandas.Timestamp.
    drop_date: boolean
        Whether to drop the date from the multiIndex

    Returns
    -------
    A pandas.DataFrame of loadings of generic contracts on tradeable
    instruments for a given date. The columns are generic instrument names and
    the index is strings representing instrument names.
    """
    dwts = pd.DataFrame(weights,
                        columns=["generic", "contract", "weight", "date"])
    dwts = dwts.pivot_table(index=['date', 'contract'],
                            columns=['generic'], values='weight', fill_value=0)
    dwts = dwts.astype(float)
    dwts = dwts.sort_index()
    if drop_date:
        dwts.index = dwts.index.levels[-1]
    return dwts
Transforms list of tuples of weights into pandas.DataFrame of weights.

    Parameters:
    -----------
    weights: list
        A list of tuples consisting of the generic instrument name,
        the tradeable contract as a string, the weight on this contract as a
        float and the date as a pandas.Timestamp.
    drop_date: boolean
        Whether to drop the date from the multiIndex

    Returns
    -------
    A pandas.DataFrame of loadings of generic contracts on tradeable
    instruments for a given date. The columns are generic instrument names and
    the index is strings representing instrument names.