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

如何为树形结构Pandas DataFrame新增子节点frequency求和的新列

Pandas树形结构子节点求和问题解答

思路合理性判断

你的思路逻辑是成立的,可以得到正确结果,但存在性能缺陷:如果数据集行数较多,逐行遍历筛选的时间复杂度为O(n²),数据规模大时运行速度会很慢,更推荐使用Pandas内置向量化操作实现。

最优实现方案

核心思路是先按parent列分组统计frequency的总和,再将统计结果映射到name列,没有子节点的条目填充0即可,代码如下:

import numpy as np
import pandas as pd

df = pd.DataFrame({'frequency': [3,5,7,8],
              'name': ['a', 'b', 'c', 'd'],
              'parent': [np.nan, 'a', 'a', 'b']})

# 按父节点分组,计算所有子节点的frequency总和
child_freq_sum = df.groupby('parent')['frequency'].sum()
# 将求和结果映射到对应name,无子节点的填充为0
df['sum_of_children'] = df['name'].map(child_freq_sum).fillna(0).astype(int)

运行上述代码后,输出的df和你给出的预期结果完全一致。

方案优势

  • 全程使用Pandas向量化操作,时间复杂度为O(n),相比逐行筛选的实现性能提升非常明显,尤其适配大数据量场景
  • 代码简洁易读,仅需两行核心逻辑即可完成需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:45:03