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

如何对DataFrame两列中反向配对的value_counts求和

解决反向配对求和问题

先把你的示例数据转成可复现的DataFrame:

import pandas as pd

df = pd.DataFrame({
    'foo': ['a', 'b', 'c', 'd'],
    'bar': ['b', 'a', 'd', 'c'],
    'value_count': [7, 22, 15, 111]
})

核心思路是给每一行的foo和bar生成标准化配对键——把两个值排序后组成元组,这样(a,b)和(b,a)会被识别为同一个键,之后按这个键分组求和即可:

# 生成排序后的配对键,统一反向配对的标识
df['pair'] = df.apply(lambda x: tuple(sorted([x['foo'], x['bar']])), axis=1)

# 按配对键分组求和,再把拆分键为foo、bar列
result = df.groupby('pair')['value_count'].sum().reset_index()
result[['foo', 'bar']] = pd.DataFrame(result['pair'].tolist(), index=result.index)

# 清理临时列并调整顺序
result = result[['foo', 'bar', 'value_count']]

运行后得到的result就是你要的输出:

foo bar  value_count
0   a   b           29
1   c   d          126

你之前用set()处理列表没效果,是因为set只能做去重,没法把反向配对归为同一组,更处理不了求和需求。上面的方法通过生成排序后的配对键,精准把反向配对归为一组,完美解决求和问题。

内容的提问来源于stack exchange,提问作者Mikołaj Przygoda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:37:08