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