如何使用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
相关产品推荐
相关产品推荐

