[Python] Pandas monthly rolling window

Discussão em 'Python' iniciado por Stack, Setembro 26, 2024.

  1. Stack

    Stack Membro Participativo

    I am looking to do a 'monthly' rolling window on daily data grouped by a category. The code below does not work as is, it leads to the following error:

    ValueError: <DateOffset: months=1> is a non-fixed frequency


    I know that I could use '30D' offset, however this would shift the date over time.

    I'm looking for the sum of a window that spans from the x-th day of a month to that same x-th day of the J-th month. E.g. with J=1: 4th of July to 4th of August, 5th of July to 5th of August, 6th of July to 6th of August etc

    I've been trying to figure this out for a few days now. Any suggestions or tipps would be very appreciated. Happy New Year.

    MRE:

    import pandas as pd
    from io import StringIO

    data = StringIO(
    """\
    date logret category
    2014-03-25 -0.01 A
    2014-04-05 -0.02 A
    2014-04-15 -0.03 A
    2014-04-25 0.01 B
    2014-05-05 0.03 B
    2014-05-15 -0.01 A
    2014-05-25 0.04 B
    """
    )

    df = pd.read_csv(data,sep="\s+",parse_dates=True,index_col="date")

    J=1

    df.groupby(['category'])['logret'].rolling(pd.DateOffset(months=J),min_periods=J*20).sum()

    Continue reading...

Compartilhe esta Página