python - 如何根据列中的列表元素对数据框进行分组
问题描述
我有一个这样的数据框:
movie_id genres
0 2 [1,2]
1 3 [1,3]
2 4 [2,4]
我想根据流派类型制作电影组(有重复)。像这样:
genre_group movie_id genres
0 1 2 [1,2]
1 3 [1,3]
0 2 2 [1,2]
2 4 [2,4]
1 3 3 [1,3]
2 4 4 [2,4]
解决方案
您可以使用explode
和map
:
df1 = df.explode('genres').sort_values('genres').rename(
columns={'genres' : 'genres_group'})\
.set_index('genres_group',append=True)
df1['genres'] = df1.index.get_level_values(0).map(df['genres'])
print(df1)
movie_id genres
genres_group
0 1 2 [1, 2]
1 1 3 [1, 3]
0 2 2 [1, 2]
2 2 4 [2, 4]
1 3 3 [1, 3]
2 4 4 [2, 4]
推荐阅读
- excel - 比较两个无序的工作表,然后突出显示差异
- javascript - 为什么 .each 与 jQuery 选择器一起使用,然后又与 $(this) 一起使用
- laravel - 如何在 Laravel 6.X 中传递符合 PSR-6 的缓存适配器?
- javascript - 当通过 props 传入时,为什么需要 state 变量的 setter 作为 useEffect 的依赖项?
- python - 将 s3 上的 svs 文件直接下载到 AWS Lambda 中的 RAM 或无需本地下载即可打开
- spring-data-jpa - 在@DataJpaTest 之后处理 h2 数据库
- c# - 属性自动生成的夹具约束
- chilkat - Chilkat - SFTP - 身份验证失败或部分成功
- azure - 使用嵌套的“reference()”调用时出现 InvalidTemplate 错误
- spring - Spring 测试:禁用记录,例如 SpringJUnit4ClassRunner