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

如何基于OR条件对DataFrame分组并统计匹配条件数量?

基于OR条件的Pandas分组与匹配分数计算问题

问题背景

这是一个类似SQL中OR逻辑分组的场景,需要在Pandas中实现多条件OR规则的分组,并为每条数据计算匹配强度分数。

核心需求

  • OR规则分组:只要满足以下四个条件中的任意一个,即可归为同一组
  • 匹配强度分数:每条数据与组内任意成员匹配的条件数量的最大值;单独成组的数据分数为0

分组条件

  1. 与他人的address_1 + address_2完全一致
  2. 与他人的address_1相同且last_name相同
  3. 与他人的phone_num相同
  4. 与他人的account_num相同

当前困境

目前仅能单独处理单个分组条件,不清楚如何合并OR逻辑生成组合分组,也不知道怎么计算匹配强度分数和分组名称。

数据示例

data = {'first_name': ['Jane', 'Bob', 'Jim', 'Karen', 'Bob', 'Timmy', 'Kim', 'Tom'],
        'last_name': ['Doe', 'Doe', 'Doe', 'Smith', 'Smith', 'Smith', 'McDonald', 'McDonald'],
        'address_1': ['123 Adams St', '123 Adams St', '123 Adams St', '234 Adams St', '8377 Smith Ave', '8377 Smith Ave', '2100 Smith St', '2100 Smith St'],
        'address_2': ['', '', '#100', 'Apt 10', 'Apt C', '', '', ''],
        'phone_num': [123456, 123654, 548978, 693817, 837263, 732612, 456871, 254803],
        'account_num': ['abcdex', 'abcdex', 'xwysa', 'lmnop', 'rstuv', 'wqoeu', 'xwysa', 'hijkl']}

df = pd.DataFrame(data, columns=['first_name', 'last_name', 'address_1', 'address_2', 'phone_num', 'account_num'])

已有尝试代码

df['criteria1'] = df['address_1'] + df['address_2'].fillna('NULL')
df['criteria2'] = df['address_1'] + df['last_name']

df['score_crit1'] = df.groupby('criteria1').cumcount()
df['score_crit1'] = df.groupby('criteria1')['score_crit1'].transform('max')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:42:55