如何基于OR条件对DataFrame分组并统计匹配条件数量?
基于OR条件的Pandas分组与匹配分数计算问题
问题背景
这是一个类似SQL中OR逻辑分组的场景,需要在Pandas中实现多条件OR规则的分组,并为每条数据计算匹配强度分数。
核心需求
- OR规则分组:只要满足以下四个条件中的任意一个,即可归为同一组
- 匹配强度分数:每条数据与组内任意成员匹配的条件数量的最大值;单独成组的数据分数为0
分组条件
- 与他人的
address_1 + address_2完全一致 - 与他人的
address_1相同且last_name相同 - 与他人的
phone_num相同 - 与他人的
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
相关产品推荐
相关产品推荐

