У меня есть фрейм данных, который выглядит следующим образом:
id tag1 tag2 tag3 col1 col2 col3 col4 col5 col6 col7 col8 col9 col10
id1 col3 col4 col7 0 0 0 0 0 0 0 0 0 0
id2 col1 col2 col9 0 0 0 0 0 0 0 0 0 0
id3 col2 col5 col6 0 0 0 0 0 0 0 0 0 0
id4 col3 col6 col10 0 0 0 0 0 0 0 0 0 0
id5 col1 col7 col8 0 0 0 0 0 0 0 0 0 0
id6 col4 col6 col9 0 0 0 0 0 0 0 0 0 0
id7 col5 col7 col10 0 0 0 0 0 0 0 0 0 0
id8 col2 col3 col6 0 0 0 0 0 0 0 0 0 0
id9 col5 col9 col10 0 0 0 0 0 0 0 0 0 0
id10 col4 col8 col9 0 0 0 0 0 0 0 0 0 0
Мне нужно получить базовый фрейм данных, показывающий 1, где в тегах появились значения столбцов (от col1 до col10):
id tag1 tag2 tag3 col1 col2 col3 col4 col5 col6 col7 col8 col9 col10
id1 col3 col4 col7 0 0 1 1 0 0 1 0 0 0
id2 col1 col2 col9 1 1 0 0 0 0 0 0 1 0
id3 col2 col5 col6 0 1 0 0 1 1 0 0 0 0
id4 col3 col6 col10 0 0 1 0 0 1 0 0 0 1
id5 col1 col7 col8 1 0 0 0 0 0 1 1 0 0
id6 col4 col6 col9 0 0 0 1 0 1 0 0 1 0
id7 col5 col7 col10 0 0 0 0 1 0 1 0 0 1
id8 col2 col3 col6 0 1 1 0 0 1 0 0 0 0
id9 col5 col9 col10 0 0 0 0 1 0 0 0 1 1
id10 col4 col8 col9 0 0 0 1 0 0 0 1 1 0
Я действительно не хочу использовать тройной l oop вроде:
cols = [el for el in df if el.startswith('col')]
tags = [el for el in df if el.startswith('tag')]
for index, row in df.iterrows():
for col in cols:
for tag in tags:
if row[tag] == col:
row[col] +=1
, но даже это пока не работает. Что было бы лучшим подходом и что не так наверху?
Большое спасибо!