Я пытаюсь удалить всю нерелевантную информацию из одного из моих столбцов в моем фрейме данных, но не знаю, как это сделать. Я импортирую данные из CSV-файла прямо в мой фрейм данных.

Итак, в настоящее время моя колонка жанров выглядит так:

{'genres': {0: [{"id": 28, "name": "Action"}, {"id": 12, "name": 'Fantasy'}, etc.

Я бы хотел, чтобы это выглядело так:

{'genres': {0: "['Action', 'Fantasy']"}, etc.

Если бы кто-нибудь мог помочь мне или отправить меня в правильном направлении, чтобы сделать это, это было бы очень признательно.

-1
FDM1999 22 Апр 2020 в 18:16
1
Вы должны использовать df.head().to_dict() и вставить его как данные в вопрос, а не вставлять изображение, проверьте почему бы не публиковать изображения кода/данных (или ссылки на них) и как предоставить отличный пример панд
 – 
anky
22 Апр 2020 в 18:18
Сделано спасибо! У Вас есть какие-то предложения?
 – 
FDM1999
22 Апр 2020 в 18:34
2
Это правильный словарь? я пока не могу повторить. вы должны быть в состоянии pd.DataFrame(d) воспроизвести кадр данных. Также, пожалуйста, напишите, как должен выглядеть ожидаемый результат
 – 
anky
22 Апр 2020 в 18:36
На каком основании должен быть сгенерирован столбец production_country?
 – 
some_programmer
22 Апр 2020 в 18:38
То, что вы там написали, бесполезно. Пожалуйста, используйте df.head().to_clipboard(), а затем перейдите в SO.
 – 
Trenton McKinney
22 Апр 2020 в 18:47

1 ответ

Основываясь на единственном индексе в описании, возможно, это то, что вы ищете, explode, transform для серии, groupbyиспользуя индекс, list все имена:

data = {'genres':
        {0: [{"id": 28, "name": "Action"}, {"id": 12, "name": 'Fantasy'}],
         1: [{"id": 40, "name": "Crime"}, {"id": 24, "name": 'Thriller'}]
         }}

df = pd.DataFrame(data)
df.head()

#       genres
# 0 [{'id': 28, 'name': 'Action'}, {'id': 12, 'nam...
# 1 [{'id': 40, 'name': 'Crime'}, {'id': 24, 'name...

Выполните шаги, указанные выше:

df['genres_fix'] = df.genres.explode().transform(
    pd.Series).groupby(level=0)['name'].apply(list)

df[['genres_fix']].head()

#   genres_fix
# 0 [Action, Fantasy]
# 1 [Crime, Thriller]
0
jcaliz 22 Апр 2020 в 19:43