pandas 无法使用literal_eval将panda Dataframe 转换为列表

qni6mghb  于 2022-12-10  发布在  其他
关注(0)|答案(1)|浏览(117)

我一直在尝试将一个pandas Dataframe列转换为列表,因为默认情况下,该列中的数据被读取为str。dataframe“movie”列“genres”中的示例数据为

[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]

我正在编写的代码

import ast 
import pandas as pd
movie = pd.read_csv("tmdb_5000_movies.csv")
movie['genres'] = movie['genres'].apply(lambda x : ast.literal_eval(str(x)))
print(type(movie['genres']))

我得到的输出是

<class 'pandas.core.series.Series'>

我真的不明白我到底错在哪里

6l7fqoea

6l7fqoea1#

pandas.DataFrameSeries对象组成(其中Series只是一个列。Series是类似于Python列表的容器对象,实际上可以通过使用Series.tolist方法转换为list
ast.literal_eval应用于Series中的每个元素,将它们从string转换为dictionary,然后将这些字典存储回Series
因此,您的代码基本上可以正常工作,但如果您希望使用list的字典而不是Series的字典,则需要执行以下操作:

import ast 
import pandas as pd
movie = pd.read_csv("tmdb_5000_movies.csv")
movie['genres'] = movie['genres'].apply(lambda x : ast.literal_eval(str(x)))

genres = movie['genres'].tolist()
print(genres)

相关问题