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

如何在Pandas中合并顺序无关的双向行并汇总计数

解决双向行程次数合并求和的问题

我来帮你搞定这个需求——要把A-B和B-A方向的行程次数合并求和,用Pandas可以轻松实现,下面是具体的方案:

核心思路

不管行程是从A到B还是B到A,我们可以把每一组站点对转换成统一的顺序(比如总是把数值较小的站点放在前面,较大的放在后面),这样双向的站点对就会被归为同一组,之后只需要按这个统一的分组对Count列求和即可。

代码实现

方法一:用Pandas的apply排序

import pandas as pd

# 你的示例数据集
group_station = pd.DataFrame(
    [[1, 2, 100], [2, 1, 200], [4, 6, 5], [6, 4, 10], [1, 4, 70]],
    columns=['A', 'B', 'Count']
)

# 生成统一顺序的站点对:每行的A、B按从小到大排序
group_station[['Station1', 'Station2']] = pd.DataFrame(
    group_station[['A', 'B']].apply(sorted, axis=1).tolist(),
    index=group_station.index
)

# 按统一站点对分组,求和Count列
result = group_station.groupby(['Station1', 'Station2'], as_index=False)['Count'].sum()

print(result)

方法二:用Numpy排序(更高效,适合大数据集)

如果你的数据集很大,用Numpy的sort会比apply更快:

import pandas as pd
import numpy as np

group_station = pd.DataFrame(
    [[1, 2, 100], [2, 1, 200], [4, 6, 5], [6, 4, 10], [1, 4, 70]],
    columns=['A', 'B', 'Count']
)

# 对A、B列按行排序,生成统一站点对
group_station[['Station1', 'Station2']] = np.sort(group_station[['A', 'B']], axis=1)

# 分组求和
result = group_station.groupby(['Station1', 'Station2'], as_index=False)['Count'].sum()

print(result)

输出结果

两种方法都会得到如下结果:

Station1  Station2  Count
0         1         2    300
1         1         4     70
2         4         6     15

这样就完美实现了把双向行程合并,得到两地的总行程次数啦~

内容的提问来源于stack exchange,提问作者Fernando Irarrázaval G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:30:03