Python 从Dataframe列中提取字符串形式的JSON对象列表

Python 从Dataframe列中提取字符串形式的JSON对象列表,python,pandas,dictionary,Python,Pandas,Dictionary,加载此数据集后,我创建了一个完全正常的熊猫数据帧: 正如您所看到的,genres列包含一个嵌套结构,它似乎是一个字典列表,或者json对象列表,具体取决于您对它的看法?这些字典的键是“id”和“name” 无论如何,我已经尝试了所有的方法,包括用tojson将列转换成json,或者使用pandas-json\u-normalize方法 如果我使用json_normalize,我会得到一个AttributeError:“str”对象没有属性“itervalues”: pd.io.json.json

加载此数据集后,我创建了一个完全正常的熊猫数据帧:

正如您所看到的,genres列包含一个嵌套结构,它似乎是一个字典列表,或者json对象列表,具体取决于您对它的看法?这些字典的键是“id”和“name”

无论如何,我已经尝试了所有的方法,包括用tojson将列转换成json,或者使用pandas-json\u-normalize方法

如果我使用json_normalize,我会得到一个AttributeError:“str”对象没有属性“itervalues”:

pd.io.json.json_normalize(obj_movies['genres'], meta = ['id','name']) 
实际上,我的目标是解析此列表,为每行创建一组唯一的流派名称…

使用:

import ast

obj_movies = pd.read_csv('tmdb_5000_movies.csv')
obj_movies['uniq'] = [list(set([y['name'] for y in x])) for x in obj_movies['genres'].apply(ast.literal_eval)]
print (obj_movies[['uniq'] ].head(10))
                                            uniq
0  [Fantasy, Science Fiction, Adventure, Action]
1                   [Fantasy, Adventure, Action]
2                     [Crime, Adventure, Action]
3               [Drama, Crime, Thriller, Action]
4           [Science Fiction, Adventure, Action]
5                   [Fantasy, Adventure, Action]
6                            [Family, Animation]
7           [Science Fiction, Adventure, Action]
8                   [Fantasy, Family, Adventure]
9                   [Fantasy, Adventure, Action]

哇,太棒了!非常感谢