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

Pandas按第一列分组后如何获取第二列的公共值

无需拆分DataFrame获取两类公共Value的方法

给定数据:

import pandas as pd
data= [['A','hi'],['A','hi1'],['A','bye'],['A','bye2'],['B','hi2'],['B','hi'],['B','bye']]
df = pd.DataFrame(data,columns =['category','Value'])

要获取category为A和B的Value公共值,无需拆分DataFrame的方法有以下几种:

方法一:分组统计类别出现次数

利用groupby统计每个Value对应的不同category数量,筛选出数量等于2的(因为只有A、B两个目标类别):

# 统计每个Value对应的不同category数量
value_category_count = df.groupby('Value')['category'].nunique()
# 筛选出在两个类别中都出现的Value
common_values = value_category_count[value_category_count == 2].index.tolist()
print(common_values)  # 输出: ['bye', 'hi']

方法二:分组聚合为集合后取交集

按category分组,将每组的Value转为集合,直接取两个集合的交集:

# 按category分组,把每组的Value转成集合
category_value_sets = df.groupby('category')['Value'].agg(set)
# 取A和B对应的集合的交集
common_values = list(category_value_sets['A'].intersection(category_value_sets['B']))
print(common_values)  # 输出: ['hi', 'bye']

这两种方法都不需要手动拆分DataFrame为A、B两个子表,直接通过Pandas的分组聚合功能完成需求,代码更简洁且扩展性更强(如果后续增加其他类别,只需调整筛选条件即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:11