如何拆分列并将频次分类值关联至DataFrame?嵌套字典DataFrame连接实操
解决方案
你的问题核心是分类数据的行数与主DataFrame不匹配,直接拼接哑变量会导致行错位。正确的做法是先按主表的主键对分类数据分组聚合,再与主表合并,步骤如下:
假设主DataFrame(df)和分类DataFrame(genres)共享主键movie_id:
- 生成分类列的哑变量,同时保留主键用于分组
genre_dummies = pd.get_dummies(genres, columns=['name'], prefix='', prefix_sep='')
- 按主键分组,对哑变量列求和(若每个分类在单一条目中仅出现一次,求和结果就是0/1的存在标记;若有重复则为频次)
genre_agg = genre_dummies.groupby('movie_id').sum()
- 将聚合后的分类数据与主DataFrame合并,空值填充为0
result = df.merge(genre_agg, on='movie_id', how='left').fillna(0)
如果你的genres表没有显式的movie_id列,可通过索引对齐分组:
# 假设genres的索引与主df的索引一一对应(每个主df行对应多行genres) genre_dummies = pd.get_dummies(genres['name']) genre_agg = genre_dummies.groupby(level=0).sum() result = df.join(genre_agg)
这样就能得到你预期的结果:主表每一行对应一个条目,后续列是各分类的频次/存在标记。
内容的提问来源于stack exchange,提问作者Mustapha Kerrou
相关产品推荐
相关产品推荐

