У меня есть фрейм данных, в котором 500K строк и 7 столбцов для дней, включая день начала и окончания.
Я ищу значение (например, равное 0) в диапазоне (startDay, endDay)
Например, для id_1, startDay = 1 и endDay = 7, поэтому я должен искать значения от D1 до D7 столбцов.
Для id_2, startDay = 4 и endDay = 7, поэтому я должен искать значения от D4 до D7 столбцов.
Однако я не смог успешно найти другой диапазон столбцов.
Выше,
- если startDay> endDay, я должен увидеть "-999"
иначе мне нужно найти первый ноль (с учетом дневного диапазона) и, например, для id_3, первый ноль в столбце D2 (день 2). И starDay для id_3 равен 1. И я хочу видеть, 2-1 = 1 (D2 - StartDay)
если я не могу найти 0, я хочу увидеть "8"
Вот мои данные;
data = {
'D1':[0,1,1,0,1,1,0,0,0,1],
'D2':[2,0,0,1,2,2,1,2,0,4],
'D3':[0,0,1,0,1,1,1,0,1,0],
'D4':[3,3,3,1,3,2,3,0,3,3],
'D5':[0,0,3,3,4,0,4,2,3,1],
'D6':[2,1,1,0,3,2,1,2,2,1],
'D7':[2,3,0,0,3,1,3,2,1,3],
'startDay':[1,4,1,1,3,3,2,2,5,2],
'endDay':[7,7,6,7,7,7,2,1,7,6]
}
data_idx = ['id_1','id_2','id_3','id_4','id_5',
'id_6','id_7','id_8','id_9','id_10']
df = pd.DataFrame(data, index=data_idx)
Что я хочу увидеть;
df_need = pd.DataFrame([0,1,1,0,8,2,8,-999,8,1], index=data_idx)