Панды заполняют столбец значениями, основанными на условии - PullRequest
0 голосов
/ 27 ноября 2018

У меня в столбце данных pandas есть столбец, например, так:

   Status
1  Past Due
2  Yet to Calc
3  Overdue
4  Past Due
5  Past Due
6  Yet to Calc
7  Past Due
8  Past Due
9  Past Due
10  Yet to Calc
11  Overdue
12  Yet to Calc
13  Past Due
14  Past Due
15  Past Due
16  Yet to Calc
17  Overdue
18  Past Due
19  Past Due
20  Past Due
21  Yet to Calc

Я хочу заполнить все значения между «Просрочено» и «Пока не рассчитано» с помощью «Просрочено».Итак, мой ожидаемый результат:

   Status
1  Past Due
2  Yet to Calc
3  Overdue
4  Overdue
5  Overdue
6  Yet to Calc
7  Past Due
8  Past Due
9  Past Due
10 Yet to Calc
11 Overdue
12 Yet to Calc
13 Past Due
14 Past Due
15 Past Due
16 Yet to Calc
17 Overdue
18 Overdue
19 Overdue
20 Overdue
21 Yet to Calc

Я попытался сгруппировать по фрагментам и заполнить вперед внутри группы следующим образом:

df3['Inventory_1'] = df3.groupby(df3.loc['Overdue':'Yet to Calc','Inventory_1']).ffill()

Но приведенное выше возвращает нулевой ряд и не заполняется.

Как это можно сделать, если не использовать ffill?

1 Ответ

0 голосов
/ 27 ноября 2018

Общая идея здесь состоит в том, чтобы замаскировать все значения, которые не Yet to Calc или Overdue, и использовать ffill.Однако это также ffill Yet to Calc вперед, что никогда не требуется.Поскольку нам нужно было сохранить Yet to Calc только для того, чтобы остановить заполнение значений Overdue, мы можем заменить все, что не является Overdue в нашем результате, тем, что содержится в исходном кадре данных.


mask + ffill + isin

s = df.Status.mask(~df.Status.isin(['Overdue', 'Yet to Calc'])).ffill()
s[s.ne('Overdue')] = df.Status

print(s)

1        Past Due
2     Yet to Calc
3         Overdue
4         Overdue
5         Overdue
6     Yet to Calc
7        Past Due
8        Past Due
9        Past Due
10    Yet to Calc
11        Overdue
12    Yet to Calc
13       Past Due
14       Past Due
15       Past Due
16    Yet to Calc
17        Overdue
18        Overdue
19        Overdue
20        Overdue
21    Yet to Calc
Name: Status, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...