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

如何统计Pandas DataFrame中路径连续节点对的出现次数?

解决方案:统计Pandas DataFrame中连续节点对的出现次数

这里有一套简洁高效的方法来实现你需要的连续节点对统计,直接上代码和解释:

完整代码

import pandas as pd

# 构造示例数据(如果你的df已经存在可以跳过这部分)
data = {
    'ID': ['001', '002', '003', '004', '005', '006', '007'],
    'Traverse': [
        '1->1->1->2->3->1',
        '13->13',
        '2->3->13->15',
        '5->6->3',
        '16->7->7->7->7->8',
        '4->4->3->5',
        '5->5->1->1->1->2'
    ]
}
df = pd.DataFrame(data)

# 生成所有连续节点对
pairs = df['Traverse'].str.split('->', expand=False).apply(
    lambda x: list(zip(x, x[1:]))
).explode()

# 统计次数并按要求格式输出
counts = pairs.value_counts()
for pair, cnt in counts.items():
    print(f"{pair[0]} to {pair[1]} : {cnt}")

代码分步解释

  • 拆分节点字符串:用str.split('->', expand=False)把每个Traverse字段拆分成节点列表,比如'1->1->1->2->3->1'会变成['1','1','1','2','3','1']。
  • 生成连续节点对:通过apply和zip(x, x[1:]),把每个节点列表中的相邻元素配对,生成类似('1','1')、('1','2')这样的元组列表。
  • 展开节点对:用explode()把每个列表里的元组单独拆成行,这样所有节点对都集中在一个Series里,方便后续统计。
  • 统计并格式化输出:value_counts()自动统计每个节点对的出现次数,最后循环输出成你需要的[节点1] to [节点2] : [次数]格式。

输出结果

运行代码后会得到如下输出(按出现次数降序排列):

1 to 1 : 4
7 to 7 : 3
1 to 2 : 2
2 to 3 : 2
5 to 5 : 1
4 to 4 : 1
3 to 1 : 1
13 to 13 : 1
3 to 13 : 1
13 to 15 : 1
5 to 6 : 1
6 to 3 : 1
16 to 7 : 1
7 to 8 : 1
4 to 3 : 1
3 to 5 : 1
5 to 1 : 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:22:45