如何获取pandas group by第一列后第二列中的公共值

v8wbuo2f  于 2023-05-05  发布在  其他
关注(0)|答案(1)|浏览(120)

我有Pandas如下

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

我需要在A和B类别的列表中获得公共值,即['hi','bye']
目前,我将 Dataframe 分为两个 Dataframe ,分别用于A和B,然后对这两个 Dataframe 应用集合交互,以获得列“Value”的公共项。请建议有没有办法不分裂成两个dataframes。

ruyhziif

ruyhziif1#

您可以使用set.intersection
仅适用于A和B:

out = (set(df.loc[df['category'].eq('A'), 'Value'])
      &set(df.loc[df['category'].eq('B'), 'Value'])
      )

所有组的通用方法:

out = set.intersection(*df.groupby('category')['Value'].agg(set))

输出:{'bye', 'hi'}

相关问题