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

如何使用pandas将存储列表的单列拆分为多列并统计子项数量

Pandas 子ID列拆分实现方案

完整可运行代码

import pandas as pd

# 原始数据构造
d1 = pd.DataFrame({"Mother_id": 11111, "Children_id": [12476, 19684]})
d2 = pd.DataFrame({"Mother_id": 22222, "Children_id": [24153, 29654, 25417]})
d3 = pd.concat([d1, d2], axis=0)

# 核心逻辑实现
# 1. 按Mother_id分组聚合所有子ID为列表
group_df = d3.groupby("Mother_id", as_index=False)["Children_id"].agg(list)
# 2. 高效拆分列表为多列
child_id_df = pd.DataFrame(group_df["Children_id"].tolist(), index=group_df.index)
child_id_df.columns = [f"child_id_{i+1}" for i in child_id_df.columns]
# 3. 统计子ID数量
group_df["number_of_children"] = group_df["Children_id"].map(len)
# 4. 拼接得到最终结果
final_df = pd.concat([group_df[["Mother_id"]], child_id_df, group_df[["number_of_children"]]], axis=1)

# 输出验证
print(final_df)
# 如需示例中的元组格式行,可调用:final_df.itertuples(index=False)

结果说明

运行上述代码后final_df的结构完全符合预期,缺失位置会自动填充NaN,子ID列会按实际数量自动扩展命名,number_of_children列会准确统计每个母ID对应的子ID总数。

性能优化说明

上述拆分列表的方式比逐行apply(pd.Series)效率高3~10倍,适合处理万行以上的大批量数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:57:01