У меня есть датафрейм с названиями фильмов и столбцами с жанрами. Например, фильм с заголовком «Один» - это «Действие» и «Вестерн», потому что в соответствующих столбцах есть «1».
Movie Action Fantasy Vestern
0 One 1 0 1
1 Two 0 0 1
2 Three 1 1 0
Моя цель - создать столбец genres
, который будет содержать названия всех жанров, которые есть у данного фильма.
Для этого я пытался использовать lambda
и list comprehension
, потому что думал, что это помогает. Но после запуска запускается такая строка кода как:
df['genres'] = df.apply(lambda x: [x+"|"+x for x in df.columns if x!=0])
Я получил только NaN
значение в каждой строке:
Movie Action Fantasy Vestern genres
0 One 1 0 1 NaN
1 Two 0 0 1 NaN
2 Three 1 1 0 NaN
Также пытался использовать groupby
, но безуспешно.
Ожидаемый результат:
Movie Action Fantasy Vestern genres
0 One 1 0 1 Action|Vestern
1 Two 0 0 1 Vestern
2 Three 1 1 0 Action|Fantasy
Код для воспроизведения:
import pandas as pd
import numpy as np
df = pd.DataFrame({"Movie":['One','Two','Three'],
"Action":[1,0,1],
"Fantasy":[0,0,1],
"Vestern":[1,1,0]})
print(df)
Спасибо за вашу помощь