如何将DataFrame中存储列表的单元格拆分为多条独立的行记录
实现方法
方法1:使用pandas内置explode方法(推荐,pandas 0.25及以上版本支持)
这是官方提供的专门用于将单元格内的列表拆分为独立行的方法,直接调用即可:
# 对指定列执行拆分,ignore_index=True用来重置连续索引 df = df.explode("column a", ignore_index=True)
执行后即可得到预期结果:
- 原索引0位置的列表
["aks1", "aks2"]会被拆为两行 - 新索引0对应值为
aks1,新索引1对应值为aks2 - 其他列的内容会和原行保持一致,自动重复匹配拆分后的行
方法2:低版本pandas兼容方案
如果你的pandas版本低于0.25没有explode方法,可以手动拆分拼接:
# 构造拆分后的单列值 expand_col = df["column a"].apply(pd.Series).stack().reset_index(drop=True) # 重复原有行匹配拆分后的长度 df_new = df.loc[df.index.repeat(df["column a"].str.len())].copy() # 替换为拆分后的列值,重置索引 df_new["column a"] = expand_col df_new.reset_index(drop=True, inplace=True)
效果和explode完全一致。
内容的提问来源于stack exchange,提问作者kwsong0314
相关产品推荐
相关产品推荐

