Я хочу заполнить пустые значения на основе 2 условий в приведенном ниже кадре данных 'test'.
Name Date A B C D Status Gap
abv 7/7/2018 61 1.83 87 33 Y 0
abv 7/8/2018 NULL NULL NULL NULL NULL 1
abv 7/9/2018 NULL NULL NULL NULL NULL 1
abv 7/10/2018 NULL NULL NULL NULL NULL 1
abv 7/11/2018 NULL 4.19 NULL NULL NULL 0
dfg 8/12/2018 42 4.16 151 82 Y 0
dfg 8/13/2018 56 NULL NULL 45 NULL 0
dfg 8/14/2018 NULL NULL NULL NULL NULL 1
dfg 8/15/2018 NULL NULL NULL NULL NULL 1
dfg 8/16/2018 NULL NULL NULL NULL NULL 1
dfg 8/17/2018 NULL NULL NULL NULL NULL 1
dfg 8/18/2018 NULL NULL NULL NULL NULL 1
dfg 8/19/2018 38 2.98 15 85 Y 0
dfg 8/20/2018 NULL NULL NULL NULL NULL 1
dfg 8/21/2018 NULL NULL NULL NULL NULL 1
kjl 10/23/2018 NULL 0 72 NULL N 0
kjl 10/24/2018 NULL NULL NULL NULL NULL 1
kjl 10/28/2018 NULL NULL NULL NULL NULL 1
kjl 10/29/2018 54 4.74 212 75 N 0
case1
для прямой заливки
для всехЗаписи того же столбца Имя, прямое заполнение с ограничением 2 записи должны применяться, если пробел = 0 и статус = у для текущей записи и пробел = 1 для последующих записей.
Case2: регистр пропуска = 0 и статус =y для текущей записи и пробел = 0 для последующих записей, прямая заливка не должна применяться для нулевых значений.
Ниже приведена логика моего кода.
if [(test['Status'] == 'Y') & (test['Gap'] == 0) & (test['Gap'].shift(1) == 1)]:
test1 = test.fillna(method = 'ffill', limit =2)
Здесь мой код не проверяетсятретье условие (где следующая запись имеет пробел = 0) и продолжает заполнение, нарушая условие case2.
Вот ожидаемый результат:
Name Date A B C D Status Gap
abv 7/7/2018 61 1.83 87 33 Y 0
abv 7/8/2018 61 1.83 87 33 Y 1
abv 7/9/2018 61 1.83 87 33 Y 1
abv 7/10/2018 NULL NULL NULL NULL NULL 1
abv 7/11/2018 NULL 4.19 NULL NULL NULL 0
dfg 8/12/2018 42 4.16 151 82 Y 0
dfg 8/13/2018 56 NULL NULL 45 NULL 0
dfg 8/14/2018 NULL NULL NULL NULL NULL 1
dfg 8/15/2018 NULL NULL NULL NULL NULL 1
dfg 8/16/2018 NULL NULL NULL NULL NULL 1
dfg 8/17/2018 NULL NULL NULL NULL NULL 1
dfg 8/18/2018 NULL NULL NULL NULL NULL 1
dfg 8/19/2018 38 2.98 15 85 Y 0
dfg 8/20/2018 38 2.98 15 85 Y 1
dfg 8/21/2018 38 2.98 15 85 Y 1
kjl 10/23/2018 NULL 0 72 NULL N 0
kjl 10/24/2018 NULL NULL NULL NULL NULL 1
kjl 10/25/2018 NULL NULL NULL NULL NULL 1
kjl 10/26/2018 NULL NULL NULL NULL NULL 1
kjl 10/27/2018 NULL NULL NULL NULL NULL 1
kjl 10/28/2018 NULL NULL NULL NULL NULL 1
kjl 10/29/2018 54 4.74 212 75 N 0