Если ваши CSV-данные выглядят так.
(я добавил кавычки к ключам жанров json просто для удобства работы с пакетом json. Поскольку это не главная проблема, вы можете сделать это в качестве предварительной обработки)

Вам придется перебирать все строки входного кадра данных.
for index, row in inputDf.iterrows():
fullDataFrame = pd.concat([fullDataFrame, get_dataframe_for_a_row(row)])
в функции get_dataframe_for_a_row:
- подготовить DataFrame с заголовком столбца и строкой значения ['title']
- добавить столбцы с именами, образованными добавлением идентификатора к 'genre _'.
- присвойте им значение 1
, а затем создайте DataFrame для каждой строки и объедините их в полный DataFrame.
pd.concat () объединяет фрейм данных, полученный из каждой строки.
объединит столбцы, если они уже существуют.
наконец, fullDataFrame.fillna(0)
для замены NaN на 0
ваш окончательный DataFrame будет выглядеть следующим образом.

вот полный код:
import pandas as pd
import json
inputDf = pd.read_csv('title_genre.csv')
def labels_for_genre(a):
a[0]['id']
labels = []
for i in range(0 , len(a)):
label = 'genre'+'_'+str(a[i]['id'])
labels.append(label)
return labels
def get_dataframe_for_a_row(row):
labels = labels_for_genre(json.loads(row['genres']))
tempDf = pd.DataFrame()
tempDf['title'] = [row['title']]
for label in labels:
tempDf[label] = ['1']
return tempDf
fullDataFrame = pd.DataFrame()
for index, row in inputDf.iterrows():
fullDataFrame = pd.concat([fullDataFrame, get_dataframe_for_a_row(row)])
fullDataFrame = fullDataFrame.fillna(0)