У меня есть DF, который выглядит примерно так.
Каждый идентификатор имеет количество столбцов. Лог c должен посмотреть на T1 и проверить, была ли программа замечена в T0. На основании результатов будет создан новый столбец. Если он находится в T0, новый столбец будет иметь такой же name
. Если он не отображается в момент T0, то name
увеличивается, поэтому он будет _2
.
Python
data = '''id, name, Time, program
1, bb, T0, a1
1, ch, T0, a1
1, cc, T0, b1
1, ch_1, T1, a1
1, ch_1, T1, a2
1, ch_1, T1, a3
1, ch_1, T1, a4
1, cc_1, T1, b1
1, cc_1, T1, b2
1, cc_1, T1, b3
2, dd, T0, c1
2, ch, T0, a1
2, cc, T0, b1
2, ch_1, T1, a1
2, ch_1, T1, a2
2, ch_1, T1, a3
2, cc_1, T1, b1
2, cc_1, T1, b2
2, cc_1, T1, b3'''
da = [[i.strip() for i in l.split(",")] for l in data.split("\n")]
df = pd.DataFrame(da[1:], columns=da[0])
Вывод
id name Time program
1 bb T0 a1
1 ch T0 a1
1 cc T0 b1
1 ch_1 T1 a1
1 ch_1 T1 a2
1 ch_1 T1 a3
1 ch_1 T1 a4
1 cc_1 T1 b1
1 cc_1 T1 b2
1 cc_1 T1 b3
2 dd T0 c1
2 ch T0 a1
2 cc T0 b1
2 ch_1 T1 a1
2 ch_1 T1 a2
2 ch_1 T1 a3
2 cc_1 T1 b1
2 cc_1 T1 b2
2 cc_1 T1 b3
Вот окончательный ожидаемый результат.
id name Time program new_name
1 bb T0 a1 bb
1 ch T0 a1 ch
1 cc T0 b1 cc
1 ch_1 T1 a1 ch_1
1 ch_1 T1 a2 ch_2 <---
1 ch_1 T1 a3 ch_2 <---
1 ch_1 T1 a4 ch_2 <---
1 cc_1 T1 b1 cc_1
1 cc_1 T1 b2 cc_2 <---
1 cc_1 T1 b3 cc_2 <---
2 dd T0 c1 dd
2 ch T0 a1 ch
2 cc T0 b1 cc
2 ch_1 T1 a1 ch_1
2 ch_1 T1 a2 ch_2 <---
2 ch_1 T1 a3 ch_2 <---
2 cc_1 T1 b1 cc_1
2 cc_1 T1 b2 cc_2 <---
2 cc_1 T1 b3 cc_2 <---