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

如何用Pandas展平DataFrame列中的列表并保留对应ID

展平DataFrame中的列表列并保留对应ID

嘿,这个需求用pandas的explode()方法就能完美解决,它专门用来处理这种把列表类型的列拆分成多行,同时保留其他列对应值的场景。

首先,先还原你的原始DataFrame(这里我们用bson.ObjectId来模拟你的数据类型):

import pandas as pd
from bson import ObjectId

# 构造原始DataFrame
df = pd.DataFrame({
    'A': [
        [ObjectId('5abb6fab81c0')],
        [ObjectId('5abb6fab81c3'), ObjectId('5abb6fab81c4')],
        [ObjectId('5abb6fab81c2'), ObjectId('5abb6fab81c1')]
    ],
    'id': [0, 1, 2]
})

接下来只需要一行代码就能完成展平:

flattened_df = df.explode('A').reset_index(drop=True)

执行后得到的flattened_df就是你想要的结果:

Aid
ObjectId('5abb6fab81c0')0
ObjectId('5abb6fab81c3')1
ObjectId('5abb6fab81c4')1
ObjectId('5abb6fab81c2')2
ObjectId('5abb6fab81c1')2

简单解释一下:

  • explode('A')会把A列中的每个列表元素拆分成单独的行,同时id列的对应值会自动重复匹配
  • reset_index(drop=True)是可选操作,用来重置结果的索引,让它从0开始连续编号,看起来更整洁

如果你的环境里没有bson库(比如不需要实际操作MongoDB数据),也可以用字符串来模拟ObjectId的显示效果,完全不影响explode的功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:12:59