Python 3.x 熊猫-查找每个类组中显示的唯一值

Python 3.x 熊猫-查找每个类组中显示的唯一值,python-3.x,pandas,Python 3.x,Pandas,我的表格如下: class | id _____________________ A 12311894945 A 12311760566 A 12311433981 A 12299990440 A 12291758744 B 12311894945 B 12311760566 B 12311433981 B 12299990440

我的表格如下:

class  |     id
_____________________
  A      12311894945
  A      12311760566
  A      12311433981
  A      12299990440       
  A      12291758744
  B      12311894945
  B      12311760566
  B      12311433981
  B      12299990440       
  B      12291758744
  C      12299990440       
  C      12291758744    

[12299990440, 12291758744]
我希望获得属于每个类组的唯一id值,以便预期结果如下:

class  |     id
_____________________
  A      12311894945
  A      12311760566
  A      12311433981
  A      12299990440       
  A      12291758744
  B      12311894945
  B      12311760566
  B      12311433981
  B      12299990440       
  B      12291758744
  C      12299990440       
  C      12291758744    

[12299990440, 12291758744]
我想可能是一个groupby类和某种交叉点,但我看不出这两个操作是如何在Pandas中一起完成的。

试试:

uniques = df.groupby('id')['class'].nunique()

uniques[uniques.eq(df['class'].nunique()) ].index
输出:

Int64Index([12291758744, 12299990440], dtype='int64', name='id')

使用集合交点和:


另一种选择是旋转:

s = pd.crosstab(df['id'],df['class']).astype(bool).all(1)
#s = df.pivot_table(index='id',columns='class',aggfunc=len).ge(1).all(1)
s[s].index
#Int64Index([12291758744, 12299990440], dtype='int64', name='id')

这是另一个选择:

uniques = df.groupby(['id','class']).size().unstack().fillna(0).astype(bool).all(axis=1)
uniques.loc[uniques].index.tolist()
或: