Определяемое пользователем расширяющееся окно в Pandas - PullRequest
1 голос
/ 12 июля 2020

Есть ли способ изменить расширяющееся windows в Pandas. Например, рассмотрим случайный DF:

df = pd.DataFrame(np.random.randint(0,60,size=(10,3)),columns=["a","b","c"])
df["d1"]=["Apple","Mango","Apple","Apple","Mango","Mango","Apple","Mango","Apple","Apple"]
df["d2"]=["Orange","lemon","lemon","Orange","lemon","Orange","lemon","Orange","lemon","Orange"]
df["date"] = ["2002-01-01","2002-01-01","2002-01-01","2002-01-01","2002-01-01","2002-01-01","2002-01-01","2002-02-01","2002-02-01","2002-02-01"]
df["date"] = pd.to_datetime(df["date"])
df


     a   b  c    d1       d2     date
0   16  25  37  Apple   Orange  2002-01-01
1   24  41  32  Mango   lemon   2002-01-01
2   41  20  53  Apple   lemon   2002-01-01
3   4   28  47  Apple   Orange  2002-01-01
4   7   29  10  Mango   lemon   2002-01-01
5   6   54  15  Mango   Orange  2002-01-01
6   26  54  35  Apple   lemon   2002-01-01
7   31  4   12  Mango   Orange  2002-02-01
8   33  36  54  Apple   lemon   2002-02-01
9   50  22  48  Apple   Orange  2002-02-01

Когда я до df.expanding(1).apply(), он применяет функцию к расширению каждой строки, можно ли передать столбец date в expanding function, чтобы вместо каждая строка как окно, оно накапливает группы строк на основе date

Существующее расширяемое окно:

window 1: 0 16  25  37  Apple   Orange  2002-01-01

window 2: 0 16  25  37  Apple   Orange  2002-01-01
          1 24  41  32  Mango   lemon   2002-01-01

window 3: 0 16  25  37  Apple   Orange  2002-01-01
          1 24  41  32  Mango   lemon   2002-01-01
          2 41  20  53  Apple   lemon   2002-01-01

Ожидаемое окно расширения:

окно 1 (все строки для даты «2002-01-01»):

0   16  25  37  Apple   Orange  2002-01-01
1   24  41  32  Mango   lemon   2002-01-01
2   41  20  53  Apple   lemon   2002-01-01
3   4   28  47  Apple   Orange  2002-01-01
4   7   29  10  Mango   lemon   2002-01-01
5   6   54  15  Mango   Orange  2002-01-01
6   26  54  35  Apple   lemon   2002-01-01 

окно 2 (все строки для даты «2002-01-01» и «2002-02-01»):

0   16  25  37  Apple   Orange  2002-01-01
1   24  41  32  Mango   lemon   2002-01-01
2   41  20  53  Apple   lemon   2002-01-01
3   4   28  47  Apple   Orange  2002-01-01
4   7   29  10  Mango   lemon   2002-01-01
5   6   54  15  Mango   Orange  2002-01-01
6   26  54  35  Apple   lemon   2002-01-01
7   31  4   12  Mango   Orange  2002-02-01
8   33  36  54  Apple   lemon   2002-02-01
9   50  22  48  Apple   Orange  2002-02-01
...