如何在Pandas DataFrame中展开列表列生成对应新行
拆分Pandas DataFrame中列表列至单独行
这事儿用Pandas的explode()方法就能完美解决,完全适配你要的场景!
核心解决方案
假设你的DataFrame变量名为df,只需要一行代码:
df_exploded = df.explode('category', ignore_index=True)
方法解释
explode('category'):指定要拆分的列是category,该列中的每个列表元素都会被拆成独立的行,同时保留原行的id值。ignore_index=True:让生成的新DataFrame重置索引,避免出现重复的原索引值,让结果更整洁。
示例效果
拿你给出的样例数据来说,原第一行:
id: 17074820, category: [15153999, 15213210, 7668302]
运行代码后会变成三行:
| id | category |
|---|---|
| 17074820 | 15153999 |
| 17074820 | 15213210 |
| 17074820 | 7668302 |
兼容旧版本Pandas(低于0.25)
如果你的Pandas版本比较老,explode()方法还没上线,可以用下面的替代方案:
# 先把category列的列表拆成多列,再堆叠成行 df_exploded = df.assign(category=df['category'].apply(pd.Series)) \ .stack() \ .reset_index(level=1, drop=True) \ .reset_index(name='category')
内容的提问来源于stack exchange,提问作者CyberPunk
相关产品推荐
相关产品推荐

