我一直在尝试将一个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'>
我真的不明白我到底错在哪里
1条答案
按热度按时间6l7fqoea1#
pandas.DataFrame
由Series
对象组成(其中Series
只是一个列。Series是类似于Python列表的容器对象,实际上可以通过使用Series.tolist
方法转换为list
。ast.literal_eval
应用于Series中的每个元素,将它们从string
转换为dictionary
,然后将这些字典存储回Series
。因此,您的代码基本上可以正常工作,但如果您希望使用
list
的字典而不是Series
的字典,则需要执行以下操作: