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

如何合并DataFrame中互为倒序的bigram并对其Frequency字段求和?

解决方案

错误原因

  • 你的Bigram列存储的是元组类型,不存在字符串的split方法,调用该方法会直接报错
  • 你编写的remove_duplicates是字典遍历逻辑,但apply作用在Bigram列的单个元组元素上,试图用字符串索引元组自然会触发TypeError: tuple indices must be integers or slices, not str报错

实现代码

直接通过排序元组生成统一分组键的方式实现倒序二元组的合并,逻辑简单无需额外类型转换:

import pandas as pd

# 构造测试样例数据(你自己的代码可以跳过这步,直接用你已有的DataFrame)
df = pd.DataFrame({
    'Bigram': [('ice', 'cream'), ('cream', 'sandwich'), ('google', 'android'), ('galaxy', 'nexus'), ('android', 'google')],
    'Frequency': [23, 21, 19, 14, 12]
})

# 生成统一分组键:正序倒序的二元组排序后得到的元组完全一致
df['group_key'] = df['Bigram'].apply(lambda x: tuple(sorted(x)))

# 分组聚合
result = df.groupby('group_key').agg({
    'Bigram': 'first', # 保留首次出现的原始Bigram顺序
    'Frequency': 'sum'
}).reset_index(drop=True)

如果你希望合并后的二元组统一使用排序后的固定顺序,只需要把agg里的'Bigram': 'first'替换为'Bigram': lambda x: tuple(sorted(x.iloc[0]))即可。

运行后得到的result就和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:15:05