【发布时间】:2017-12-22 09:21:02
【问题描述】:
pandas 新手,如果解决方案很明显,请见谅。
我有一个包含不同电影场景和该电影场景环境的数据框(见下文)
import pandas as pd
data = [{'movie' : 'movie_X', 'scene' : '1', 'environment' : 'home'},
{'movie' : 'movie_X', 'scene' : '2', 'environment' : 'car'},
{'movie' : 'movie_X', 'scene' : '3', 'environment' : 'home'},
{'movie' : 'movie_Y', 'scene' : '1', 'environment' : 'home'},
{'movie' : 'movie_Y', 'scene' : '2', 'environment' : 'office'},
{'movie' : 'movie_Z', 'scene' : '1', 'environment' : 'boat'},
{'movie' : 'movie_Z', 'scene' : '2', 'environment' : 'beach'},
{'movie' : 'movie_Z', 'scene' : '3', 'environment' : 'home' }]
myDF = pd.DataFrame(data)
在这种情况下,电影具有它们所属的多种类型。我有一本字典(如下),描述了每部电影所属的类型
genreDict = {'movie_X' : ['romance', 'action'],
'movie_Y' : ['comedy', 'romance', 'action'],
'movie_Z' : ['horror', 'thriller', 'romance']}
我想按这本字典对 myDF 进行分组,特别是能够分辨出特定环境在特定类型中出现的次数(例如,在类型恐怖中,“船”被计算一次,“海滩”被计算为算一次,“家”算一次)。最好和最有效的方法是什么?我尝试将字典映射到数据框,然后按列表分组:
myDF['genres'] = myDF['movie'].map(genreDict)
返回:
movie scene environment genres
0 movie_X 1 home [romance, action]
1 movie_X 2 car [romance, action]
2 movie_X 3 home [romance, action]
3 movie_Y 1 home [comedy, romance, action]
4 movie_Y 2 office [comedy, romance, action]
5 movie_Z 1 boat [horror, thriller, romance]
6 movie_Z 2 beach [horror, thriller, romance]
7 movie_Z 3 home [horror, thriller, romance]
但是,我收到一条错误消息,提示该列表不可散列。希望大家能帮忙:)
【问题讨论】:
-
你能发布你想要的数据集吗?
标签: list pandas dictionary dataframe pandas-groupby