如何基于存储列表的列展开pandas DataFrame 实现同长列表列对齐拆分
解决方案
你可以直接用pandas自带的explode方法实现多列表列同步拆分对齐,具体操作如下:
方法1:pandas 0.25及以上版本(推荐)
新版本pandas的explode原生支持多列同时操作,拆分后自动按列表索引对齐:
import pandas as pd # 示例数据构造,你可以替换为自己的DataFrame df = pd.DataFrame({ 'Col1': ['test0'], 'col2': [[1,2,3]], 'col3': [['ab','bc','cd']] }) # 直接指定所有需要拆分的列表列即可 result_df = df.explode(['col2', 'col3']) print(result_df)
方法2:兼容低版本pandas
如果你的pandas版本低于0.25不支持多列explode,可以用索引+逐列explode的方式实现:
# 先将非列表列设为索引,避免拆分时丢失关联关系 result_df = df.set_index('Col1').apply(pd.Series.explode).reset_index()
注意:以上两种方法都要求同一行内的所有待拆分列表长度一致,否则会抛出长度不匹配的错误,刚好符合同步对齐的要求。
内容的提问来源于stack exchange,提问作者Dcook
相关产品推荐
相关产品推荐

