You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何展平DataFrame中的列表类型列?

展平DataFrame中的多列表列

方法一:使用pandas的explode方法(推荐,pandas 1.3.0+)

直接对需要展平的多列执行explode操作,代码如下:

import pandas as pd

df = pd.DataFrame({
    'col_1': ['abcd3', 'd4fs3'],
    'col_2': ['vfce157', 'dfde28'],
    'col_3': [['id_1','id_2'],['id_4','id_6','id_7']],
    'col_4': [['p_1','p_2'],['p_3','p_5','p_0']],
    'col_5': [['d_1','d_2'],['d_4','d_7','d_8']]
})

# 同时展平多个列表列,重置索引避免重复
result_df = df.explode(['col_3', 'col_4', 'col_5'], ignore_index=True)
print(result_df)

执行后输出结果与你期望的完全一致,ignore_index=True会重置结果的索引,保证索引连续不重复。

方法二:兼容旧版pandas(低于1.3.0)

如果你的pandas版本不支持多列explode,可以通过逐行拆分列表的方式实现:

import pandas as pd

df = pd.DataFrame({
    'col_1': ['abcd3', 'd4fs3'],
    'col_2': ['vfce157', 'dfde28'],
    'col_3': [['id_1','id_2'],['id_4','id_6','id_7']],
    'col_4': [['p_1','p_2'],['p_3','p_5','p_0']],
    'col_5': [['d_1','d_2'],['d_4','d_7','d_8']]
})

def process_row(row):
    # 重复非列表列的值,次数与列表长度匹配
    fixed_cols = row[['col_1', 'col_2']].repeat(len(row['col_3'])).reset_index(drop=True)
    # 将列表列转为DataFrame
    list_cols = pd.DataFrame({
        'col_3': row['col_3'],
        'col_4': row['col_4'],
        'col_5': row['col_5']
    })
    # 合并固定列与拆分后的列表列
    return pd.concat([fixed_cols, list_cols], axis=1)

# 处理所有行并合并结果
result_df = pd.concat([process_row(row) for _, row in df.iterrows()], ignore_index=True)
print(result_df)

该方法逐行处理数据,将每行的列表拆分为多行,同时重复对应行的非列表列值,最终合并得到目标结果。


内容的提问来源于stack exchange,提问作者kelopdevop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:30:53