Извлечение строки из фрейма данных в Python - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть датафрейм, который включает в себя «столбец жанров», и его структура выглядит так:

0    [{"id": 28, "name": "Action"}, {"id": 12, "nam..."
1    [{"id": 12, "name": "Adventure"}, {"id": 14, "..."
2    [{"id": 28, "name": "Action"}, {"id": 12, "nam..."
3    [{"id": 28, "name": "Action"}, {"id": 80, "nam..."
4    [{"id": 28, "name": "Action"}, {"id": 12, "nam..."
Name: genres, dtype: object

Я просто хочу извлечь такие жанры, как "Действие", "Приключение" и т. Д.

Я использовал другой метод, но ни один из них не был достигнут.

d2 = pd.read_csv(r"C:\Users\nxx\PycharmProjects\tmdb_5000_movies.csv")
d2=pd.DataFrame(d2)
d2["genres"] = re.search(" (.?)}",d2["genres"]).group(1,2)

При выполнении вышеуказанного кода я получаю следующую ошибку.

Name: genres, dtype: object
    return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object

Я пытался преобразовать столбец в str, но это не сработало.

Я тоже пытался следовать.

x=["Action","Crime","Horror","Drama","Comedy","Romance","Thriller","Documentary","Family","Adventure","Animation" "Science Fiction","Mystery","Fantasy","War","History","Music"]


d2["genres"] = d2["genres"].apply(lambda x: ", ".join(x["Action"] for i in x)) print(d2["genres"]) 
d2["genres"] = d2["genres"].apply(lambda x: ", ".join(x["Action"] for i in x)) TypeError: string indices must be integers –

1 Ответ

0 голосов
/ 26 апреля 2019

Если вам нужно извлечь имя из списка

Использование:

d2 = pd.read_csv(r"C:\Users\nxx\PycharmProjects\tmdb_5000_movies.csv")
d2["genres"] = d2["genres"].apply(lambda x: ", ".join(i["name"] for i in x))
...