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

如何将Pandas DataFrame中数组类型行拆分为多行?

使用pd.DataFrame.explode()拆分DataFrame数组列为多行

我有一个pandas DataFrame结构,其中部分列的条目为数组类型,希望将这些数组条目拆分为长格式的多行。

可复现代码

import pandas as pd
import numpy as np

date = '08-30-2022'
ids = ['s1', 's2']

g1 = ['b1', 'b2']
g2 = ['b1', 'b3', 'b4']
g_ls = [g1, g2]

v1 = [2.0, 2.5]
v2 = [3.2, np.nan, 3.7]
v_ls = [v1, v2]

dict = {
    'date': [date] * len(ids),
    'ids': ids,
    'group': g_ls,
    'values': v_ls
}

df_in = pd.DataFrame.from_dict(dict)

dict_out = {
    'date': [date] * 5,
    'ids': ['s1', 's1', 's2', 's2', 's2'],
    'group': ['b1', 'b2', 'b1', 'b3', 'b4'],
    'values': [2.0, 2.5, 3.2, np.nan, 3.7]
}
desired_df = pd.DataFrame.from_dict(dict_out)

当前DataFrame样式

date ids         group           values
0  08-30-2022  s1      [b1, b2]       [2.0, 2.5]
1  08-30-2022  s2  [b1, b3, b4]  [3.2, nan, 3.7]

期望得到的DataFrame样式

date ids group  values
0  08-30-2022  s1    b1     2.0
1  08-30-2022  s1    b2     2.5
2  08-30-2022  s2    b1     3.2
3  08-30-2022  s2    b3     NaN
4  08-30-2022  s2    b4     3.7

解决方案

直接使用pd.DataFrame.explode()方法,同时指定需要拆分的多个列(确保每个列的数组长度一一对应),即可将数组列拆分为多行:

result_df = df_in.explode(['group', 'values'], ignore_index=True)

执行后得到的result_df与desired_df完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:39:20