如何将DataFrame中嵌套字典的genres列拆分为独立DataFrame
拆分DataFrame中的genres列为独立的(id, name) DataFrame
你的explode()只是把genres列里的字典列表拆成了每行一个字典,但还没把字典里的id和name提取成独立列。按下面的步骤就能得到目标结果:
- 先拆分列表到单行单个字典
genres_exploded = df['genres'].explode()
这一步会把每个列表里的字典单独占一行,但此时genres列的元素还是完整的字典。
- 将字典列转换为包含id和name的DataFrame
import pandas as pd genres_df = pd.DataFrame(genres_exploded.tolist())
tolist()会把字典列转换成字典列表,再用pd.DataFrame直接解析成两列的结构。
- (可选)关联原DataFrame的其他字段
如果需要保留原数据的其他列(比如标题、ID等),可以把原表去掉genres列后和新生成的genres_df合并:
final_df = df.drop('genres', axis=1).join(genres_df)
示例说明
假设原DataFrame结构如下:
| index | title | genres |
|---|---|---|
| 0 | 头号玩家 | [{"id":28,"name":"动作"}, {"id":12,"name":"冒险"}, {"id":878,"name":"科幻"}] |
| 1 | 肖申克的救赎 | [{"id":18,"name":"剧情"}] |
执行上述代码后,final_df的结构就是:
| index | title | id | name |
|---|---|---|---|
| 0 | 头号玩家 | 28 | 动作 |
| 0 | 头号玩家 | 12 | 冒险 |
| 0 | 头号玩家 | 878 | 科幻 |
| 1 | 肖申克的救赎 | 18 | 剧情 |
特殊情况处理
如果genres列存在空列表或None值,拆分后会出现空行,可在第一步后加上dropna()过滤:
genres_exploded = df['genres'].explode().dropna()
内容的提问来源于stack exchange,提问作者Mustapha Kerrou
相关产品推荐
相关产品推荐

